HibernateEntityQuery和EJBQL限制

时间:2011-09-26 17:51:20

标签: java hibernate ejbql

我刚刚继承了一些使用HibernateEntityQueryEJBQL限制的代码。

有一个包含各种字段的“活动”表/实体,现有的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 OR wed = true或fri = true的所有活动。

EJBQL的问题在于它使用AND来应用限制,而我需要执行以下操作:

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

有没有办法以“如果以下任何一项为真,则返回结果”的形式指定限制?

1 个答案:

答案 0 :(得分:0)

解决方案是将初始过滤移至setEjbql()调用,该调用在setRestrictionExpressionStrings()之前应用。