在 Hibernate 的 NamedQuery 中使用用户定义的变量
Using User-Defined Variables in NamedQuery in Hibernate
我的任务是加载类别(按名称加载)和子类别中的所有产品。使用 MySQL 后,我创建了 SQL 查询:
select *
from product
where primaryCategoryID in (
select categoryID
from (select * from category) categories,
(select pv := (select categoryID from category where name = 'Tools') as ID) initialisation
where find_in_set(parentCategory, pv) > 0
and pv := concat(pv, ',', categoryID)
union
select categoryID from category where name = 'Tools'
)
您可以在类别名称中提到 'Tools'。它运作良好但如果您有任何建议 - 非常欢迎您。
在我的项目中,我正在使用 Hibernate,Named Query。问题在于变量@pv。现在它没有被编译并抛出异常 'unexpected token...'
有谁知道如何在 NamedQuery 中使用变量?
Hibernate 不支持许多 SQL 功能。例如。您在不支持的查询中使用 union
。与变量相同。
尝试使用命名本机查询(参见example)
注释可能是这样的(来自上面的例子)
@NamedNativeQueries({
@NamedNativeQuery(
name = "findStockByStockCodeNativeSQL",
query = "select * from stock s where s.stock_code = :stockCode",
resultClass = Stock.class
)
})
@Entity
@Table(name = "stock", catalog = "mkyong")
public class Stock implements java.io.Serializable {
并将您的查询放在注释中
我的任务是加载类别(按名称加载)和子类别中的所有产品。使用 MySQL 后,我创建了 SQL 查询:
select *
from product
where primaryCategoryID in (
select categoryID
from (select * from category) categories,
(select pv := (select categoryID from category where name = 'Tools') as ID) initialisation
where find_in_set(parentCategory, pv) > 0
and pv := concat(pv, ',', categoryID)
union
select categoryID from category where name = 'Tools'
)
您可以在类别名称中提到 'Tools'。它运作良好但如果您有任何建议 - 非常欢迎您。 在我的项目中,我正在使用 Hibernate,Named Query。问题在于变量@pv。现在它没有被编译并抛出异常 'unexpected token...' 有谁知道如何在 NamedQuery 中使用变量?
Hibernate 不支持许多 SQL 功能。例如。您在不支持的查询中使用 union
。与变量相同。
尝试使用命名本机查询(参见example)
注释可能是这样的(来自上面的例子)
@NamedNativeQueries({
@NamedNativeQuery(
name = "findStockByStockCodeNativeSQL",
query = "select * from stock s where s.stock_code = :stockCode",
resultClass = Stock.class
)
})
@Entity
@Table(name = "stock", catalog = "mkyong")
public class Stock implements java.io.Serializable {
并将您的查询放在注释中