【发布时间】:2019-04-13 08:42:10
【问题描述】:
所以我有一个 Restrictions.eq 列表,我想将它添加到 Restrictions.or 标准中。有可能吗?如何 ? 下面是我脑海中的例子:
List<Integer> stars=Arrays.asList(1,2,3);
这些是我在 postgresql 数据库中的酒店行:
- id : 1 , name : Hilton Dubai , 星级 : 1
- id : 2 , name : Hilton Istanbul , star : 2
- id : 3 , name : Hilton Paris , star : 3
- id : 4 , name : Hilton London , star : 4
-
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
【问题讨论】:
-
是的,因为 or() 需要一个可变参数(即一个数组):docs.jboss.org/hibernate/orm/5.4/javadocs/org/hibernate/…。您还可以使用析取并添加您的条件:docs.jboss.org/hibernate/orm/5.4/javadocs/org/hibernate/…。但是除非你维护一个非常旧的休眠应用程序(我怀疑:否则你之前已经遇到过这种代码),你为什么要使用旧的休眠条件 API,它已被弃用,并将在下一个版本中消失?