所以我有一个Restrictions.eq列表,我想将其添加到Restrictions.or条件。可能吗?怎么样 ? 波纹管就是我心中的例子:
List<Integer> stars=Arrays.asList(1,2,3);
这些是我在postgresql db中的酒店行:
id:5,名字:Hilton Rome,星级:5
Criteria criteria = createCriteria();
List<SimpleExpression> expressions=new ArrayList();
for(Integer star:stars){
expressions.add(Restrictions.eq("star",star));
}
criteria.add(Restrictions.or(expressions));
List<Hotel> hotels=criteria.list(); // returns id 1 and 2 and 3
答案 0 :(得分:0)
您的表达不正确。您说的是所有这些表达式,否则当我用“或”检查将其连接时,我将给您另一个表达式。
您需要将表达式创建为仅一个表达式,然后使用Restrictions.or
将所有simpleExpression添加到其他表达式。
删除List<SimpleExpression> expressions=new ArrayList();
创建一个Criterion
。
在循环中将所有Criterion
与Restrictions.or
连接起来。