簡體   English   中英

HQL中的常量枚舉值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM