hibernate - 如何在 hibernate 的独立条件查询中使用AND OR运算符

标签 hibernate

我需要使用AND/OR运算符来 hibernate 分离的条件查询。
我想将SQL等效为:

Select * from myTable where city in ( X, Y ) OR city in (A,B);  

//注意,我需要在此处使用多个“In”

如何创建citeria查询以使用“或”运算符。

就像是
DetachedCriteria criteria = DetachedCriteria.forClass(
    myClass.class)
   .add(Property.forName("city").in(X,Y));
criteria.**Or**(add(Property.forName("city").in(X,Y));

不幸的是,条件中没有OR方法,只能在其中添加。

提前致谢

最佳答案

使用Restrictions.conjunction()Restrictions.disjunction()创建条件的层次结构。

看看here - section 15.2here

编辑:

我想您的代码Property.forName("city").in(X,Y))是正确的(我不记得这个条款了)

DetachedCriteria criteria = DetachedCriteria.forClass(
    myClass.class)
   .add(Restrictions.disjunction()
       .add( Property.forName("city").in(X,Y) )
       .add(Property.forName("city").in(X,Y)  )
   );

关于hibernate - 如何在 hibernate 的独立条件查询中使用AND OR运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4281158/

相关文章:

java - Hibernate:使用 Ctriteria API 从两个链接表中获取数据

java - Spring HibernateTemplate 在运行时添加映射

java - Spring Boot 2.0.0 循环 bean 依赖 EntityManger 和 SessionFactory

java - 使用 Hikari CP 检测到明显的连接泄漏

java - 一对一实体映射删除操作不起作用

java - Hibernate:javax.naming.NoInitialContextException(使用Hibernate生成的DAO)

java - Spring Hibernate 模式更新不适用于数据库名称中的减号

java - 使用启用了符合 JPA 的事务访问的 JTA 时无法访问事务

java - Spring Boot EnableJpaRepositories 错误

hibernate - Grails域类动态列表作为属性