当前位置:  开发笔记 > 编程语言 > 正文

在使用带有hibernate的条件查询时,如何将"OR"标准放在一起?

如何解决《在使用带有hibernate的条件查询时,如何将"OR"标准放在一起?》经验,为你挑选了4个好方法。

我正在尝试使用hibernate条件查询在三个字段上执行基本的"OR".

class Whatever{
 string name;
 string address;
 string phoneNumber;
}

我想构建一个条件查询,我的搜索字符串可以匹配"name"或"address"或"phoneNumber".



1> sblundy..:

你想用Restrictions.disjuntion().像这样

session.createCriteria(Whatever.class)
    .add(Restrictions.disjunction()
        .add(Restrictions.eq("name", queryString))
        .add(Restrictions.eq("address", queryString))
        .add(Restrictions.eq("phoneNumber", queryString))
    );

请参阅此处的Hibernate文档.


如果我想要`(name = x AND address = y)OR(phoneNumber = z)`怎么办?

2> Rob Oxspring..:

假设你有一个hibernate会话,那么类似下面的东西应该工作:

Criteria c = session.createCriteria(Whatever.class);
Disjunction or = Restrictions.disjunction();
or.add(Restrictions.eq("name",searchString));
or.add(Restrictions.eq("address",searchString));
or.add(Restrictions.eq("phoneNumber",searchString));
c.add(or);


我喜欢创建Disjunction并命名它的语法.它比其他解决方案更具可读性.

3> 小智..:
    //Expression :  (c1 AND c2) OR (c3)      


     Criteria criteria = session.createCriteria(Employee.class);

      Criterion c1 = Restrictions.like("name", "%e%");
      Criterion c2 = Restrictions.ge("salary", 10000.00);
      Criterion c3 = Restrictions.like("name", "%YYY%");
      Criterion c4 = Restrictions.or(Restrictions.and(c1, c2), c3);
      criteria.add(c4);

//可以为(c1 OR c2)AND c3或任何复杂表达式做同样的事情.



4> 小智..:
//Expression :  (c1 AND c2) OR (c3)      


 Criteria criteria = session.createCriteria(Employee.class);

  Criterion c1 = Restrictions.like("name", "%e%");
  Criterion c2 = Restrictions.ge("salary", 10000.00);
  Criterion c3 = Restrictions.like("name", "%YYY%");
  Criterion c4 = Restrictions.or(Restrictions.and(c1, c2), c3);
  criteria.add(c4);

  //Same thing can be done for (c1 OR c2) AND c3, or any complex expression.

推荐阅读
mobiledu2402852357
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有