【发布时间】:2014-09-26 16:01:47
【问题描述】:
我有一个有效的查询,我需要通过使用常量枚举值过滤来修改它。
现在看起来是这样的:
public static final String venueQuery =
"select distinct v from package.Venue v "
+ "<some joins here> "
+ "WHERE v.venueType = package.enums.VenueType.VOUCHER_PROVIDER ";
以这种方式更改数据会导致
org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token
列定义是这样的:
@Enumerated(EnumType.STRING)
@Column(name = "venue_type")
private VenueType venueType;
枚举定义是这样的:
public enum VenueType {
RESTAURANT, BAR, CAFE, FUN_CLUB, VOUCHER_PROVIDER
}
我确信查询的其他部分工作正常,因为删除它后,不会抛出异常。
在 HQL 查询中设置常量枚举值有技巧吗?
【问题讨论】:
-
你试过参数化查询吗?并传递一个枚举值作为参数值?
-
是的,通过就好了。但我使用venueQuery 进行基本查询,并使用额外的ORDER BY 或WHERE 原因字符串对其进行扩展。所以我想避免向所有派生方法添加参数