[英]constant enum value in HQL
我有一個工作查詢,我需要通過使用常量枚舉值進行過濾來修改。
現在它看起來像這樣:
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查詢中設置常量枚舉值的技巧?
首選方法是將參數添加到查詢中並將枚舉實例作為參數值傳遞,但如果您不(或不能)將其作為參數化查詢,您仍然可以使用String
連接來完成這個:
public static final String venueQuery =
"select distinct v from package.Venue v "
+ "<some joins here> "
+ "WHERE v.venueType = '" + VenueType.VOUCHER_PROVIDER.name() +"'";
如果你想要一個編譯時常量查詢String
:
public static final String venueQuery =
"select distinct v from package.Venue v "
+ "<some joins here> "
+ "WHERE v.venueType = 'VOUCHER_PROVIDER'";
確保表列名稱和新實例化的類屬性名稱相同。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.