0

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

我想做的是使用 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 向我展示了它对每个字段都使用了 And 条件。我还尝试将 org.hibernate.criterion.Disjunction 与 LogicalExpression 一起使用,但遍历所有字段非常麻烦。

我想知道是否有一些类可以像标准一样工作。示例但每个字段都有条件,或者我可以选择“与”或“或”。

感谢您的时间 : )

4

1 回答 1

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”进行简单的查询。

于 2012-12-12T11:36:56.797 回答