Hibernate 4.0逻辑表达式或条件通过所有类的属性

时间:2012-12-12 10:48:13

标签: hibernate

我有一个项目,我必须在数据库上实现一种懒惰的搜索。

我想做的是使用org.hibernate.criterion.Example但使用'或'条件 每个属性。

例如,假设我有一个类似下面的课程

public class Cat{
   private String name;
   private String breed;
   private Date birthDay;
/*getter and setter omitted*/
}

我将所有三个字段都设置为值

Cat cat2Find = new Cat();
cat2Find.setName("Nabi");
cat2Find.setBreed("That hairless Egyptian cat");
cat2Find.setBirthDay( someDate );    //5th May 2005 for example

我想找一只猫 他的名字是“Nabi” 或品种是“无毛的埃及猫” 或者谁的生日是2005年5月5日

我尝试使用org.hibernate.criterion.Example但是show_sql显示我使用了每个字段的条件。 我也尝试使用org.hibernate.criterion.Disjunction和LogicalExpression 但是遍历所有领域真是太麻烦了。

我想知道是否有一些类似于标准的类。例如但是有条件 每个字段或我可以选择“和”或“或”。

感谢您的时间:)

1 个答案:

答案 0 :(得分:0)

    // Use disjunction() or conjunction() if you need more than 2 expressions
Disjunction aOrBOrC = Restrictions.disjunction(); // A or B or C
aOrBOrC.add(Restrictions.eq("b", "a"));
aOrBOrC.add(Restrictions.eq("b", "b"));
aOrBOrC.add(Restrictions.eq("b", "c"));

// Use Restrictions.and() / or() if you only have 2 expressions
crit.add(Restrictions.and(Restrictions.eq("a", "abc"), aOrBOrC));

这样你可以使用“AND”/“OR”进行简单的查询。