带有“in”运算符和空列表的标准

时间:2014-01-06 15:50:42

标签: java hibernate

我有下一个问题。

我有下一个标准:

criteria.add(Restrictions.in("entity.otherEntity", getOtherEntitiesList()));

如果我的otherEntitiesList为空。 Hibernate生成下一个查询:

select count(*) as y0_ 
from OTHER_ENTITY this_ 
where this_.OTHER_ENTITY_ID in ( ) 

我从Oracle获得例外。

我在Hibernate代码中找到了下一行:

 String params = values.length > 0 ? StringHelper.repeat(
                singleValueParam + ", ", values.length - 1 )
                + singleValueParam : "";

使用此方法生成条件是不可能的。 我需要一种方法来生成带有空列表的Hibernate标准。如果列表为空,我想得到空答案。

有可能吗?

由于

1 个答案:

答案 0 :(得分:2)

为什么不首先检查列表大小然后创建限制(如果大小为> 0):

if (getOtherEntitiesList() != null && getOtherEntitiesList().size() > 0) {
    criteria.add(Restrictions.in("entity.otherEntity", getOtherEntitiesList()));
}