我刚刚继承了一些使用HibernateEntityQuery和EJBQL限制的代码。
有一个带有各种字段的“活动”表/实体,现有的EJBQL限制如下所示:
private final String[] SEARCHRESTRRICTION = {
"activity.startDate >= #{activityList.startMonthBeginDate}",
"activity.startDate <= #{activityList.startMonthEndDate}",
"activity.cost >= #{activityList.minCost}"
}该表还有七个布尔字段,表示天数(sun/mon/tue.)适用于某一特定活动。现在我想按天查询-用户将选择他们感兴趣的天数,过滤后的结果应该包括与用户选择的任何一天相匹配的活动。
例如,如果用户检查mon/ wed / fri,查询应该返回mon = true或wed= true或fri= true的所有活动。
EJBQL的问题在于它使用AND应用了这些限制,而我需要这样做:
select * from activity where
(mon = true OR wed = true OR fri = true);是否有方法以“如果下列任何一项为真返回结果”的形式指定限制?
发布于 2011-10-24 12:39:14
解决方案是将初始筛选移到setEjbql()调用,该调用在setRestrictionExpressionStrings()之前应用。
https://stackoverflow.com/questions/7559091
复制相似问题