2011-09-26 53 views
0

我剛剛繼承了一些使用HibernateEntityQueryEJBQL限制的代碼。HibernateEntityQuery和EJBQL限制

有一個「活動」表/與各個領域的實體,而現有的EJBQL限制樣子:

private final String[] SEARCHRESTRRICTION = { 
    "activity.startDate >= #{activityList.startMonthBeginDate}", 
    "activity.startDate <= #{activityList.startMonthEndDate}", 
    "activity.cost >= #{activityList.minCost}" 
} 

表也有代表7個布爾字段天(太陽/月/星期二...)這適用於特定的活動。現在我想按天查詢 - 用戶將選擇他們感興趣的日期,過濾後的結果應包含與用戶選擇的日期相匹配的任意的活動。

例如,如果用戶檢查mon/wed/fri,查詢應該返回mon = true或wed = true或fri = true的所有活動。

EJBQL的問題是,它適用於使用AND的限制,而我需要做的是這樣的:

select * from activity where 
     (mon = true OR wed = true OR fri = true); 

是否有指定的形式限制的方式「迴歸如果有任何結果以下是真實的「?

回答

0

解決方案是將初始過濾移至setEjbql()調用,該調用在setRestrictionExpressionStrings()之前應用。