如何使用“或”条件以及“限制条件”列表

时间:2019-04-13 08:42:11

标签: java hibernate criteria

所以我有一个Restrictions.eq列表,我想将其添加到Restrictions.or条件。可能吗?怎么样 ? 波纹管就是我心中的例子:

List<Integer> stars=Arrays.asList(1,2,3);

这些是我在postgresql db中的酒店行:

  1. id:1,名字:迪拜希尔顿酒店,星级:1
  2. id:2,名字:Hilton Istanbul,星级:2
  3. id:3,名字:巴黎希尔顿酒店,星级:3
  4. id:4,名字:伦敦希尔顿酒店,星级:4
  5. 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
    

1 个答案:

答案 0 :(得分:0)

您的表达不正确。您说的是所有这些表达式,否则当我用“或”检查将其连接时,我将给您另一个表达式。 您需要将表达式创建为仅一个表达式,然后使用Restrictions.or将所有simpleExpression添加到其他表达式。 删除List<SimpleExpression> expressions=new ArrayList(); 创建一个Criterion。 在循环中将所有CriterionRestrictions.or连接起来。