2016-07-23 29 views
0

我在SellingRate实体中有一个属性“salePointId”。现在我想创建一个Criteria,以便它在列表中获取带有salePointId的对象。Hibernate条件在OR中有一组条件,从列表中挑选

List<Integer> salePointIds; // some list coming from code above 
    Criteria criteria = session.createCriteria(SellingRate.class) 
      .add(Restrictions.ge("endDate", date)) 
      .add(Restrictions.le("startDate", date)); 
    for (int id: salePointIds) { 
     // what should be written here 
     // to get an OR of restrictions on id 
    } 

回答

0

想通了。 Restriocion.disjunction()可以用于它。

List<Integer> salePointIds; // some list coming from code above 
Criteria criteria = session.createCriteria(SellingRate.class) 
     .add(Restrictions.ge("endDate", date)) 
     .add(Restrictions.le("startDate", date)); 
Disjunction conditionsInOR = Restrictions.disjunction(); 
for (int id: salePointIds) { 
    conditionsInOR.add(Restrictions.eq("id", id)); 
} 
criteria.add(conditionsInOR); 

备选:

Critera criteria = session.createCriteria(SellingRate.class) 
     .add(Restrictions.ge("endDate", date) 
     .add(Restrictions.le("startDate", date) 
     .add(Property.forName("id").in(list.toArray())