我有一个项目,我必须在数据库上实现一种懒惰的搜索。
我想做的是使用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 但是遍历所有领域真是太麻烦了。
我想知道是否有一些类似于标准的类。例如但是有条件 每个字段或我可以选择“和”或“或”。
感谢您的时间:)
答案 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”进行简单的查询。