`

hibernate: 用Disjunction和Conjunction构造复杂的查询条件

阅读更多
Disjunction 与 Conjunction 表示逻辑或与逻辑与

可以构造复杂的Sql 语句

Disjunction disjunction = Restrictions.disjunction();
 Criterion cirterion = Restrictions.sqlRestriction("SIMULPORTCAPACITY<SIMULPORTCAPACITYOCUPIED".toLowerCase());
  disjunction.add(cirterion);
cirterion = Restrictions.sqlRestriction("ADSLPORTCAPACITY<ADSLPORTCAPACITYOCCUPIED".toLowerCase());
  disjunction.add(cirterion);
  cirterion = Restrictions.sqlRestriction("LANPORTCAPACITY<LANPORTCAPACITYOCCUPIED".toLowerCase());
  disjunction.add(cirterion);

  Conjunction conjunction = Restrictions.conjunction();
  cirterion = Restrictions.eq("lanportcapacity", 0);
  conjunction.add(cirterion);
  cirterion = Restrictions.eq("simulportcapacity", 0);
  conjunction.add(cirterion);
  cirterion = Restrictions.eq("adslportcapacity", 0);
  conjunction.add(cirterion);

disjunction.add(conjunction);
  queryCriteria.add(disjunction);



构造出的条件如下:
select *
  from aaaa this_
 where (simulportcapacity < simulportcapacityocupied or
       adslportcapacity < adslportcapacityoccupied or
       lanportcapacity < lanportcapacityoccupied or
       (this_.LANPORTCAPACITY = ? and this_.SIMULPORTCAPACITY = ? and
       this_.ADSLPORTCAPACITY = ?))

// 如果 是 :

queryCriteria.add(disjunction);

queryCriteria.add(conjunction);

//那么 sql  :
select *
  from aaaa this_
 where (simulportcapacity < simulportcapacityocupied or
       adslportcapacity < adslportcapacityoccupied or
       lanportcapacity < lanportcapacityoccupied )and
       (this_.LANPORTCAPACITY = ? and this_.SIMULPORTCAPACITY = ? and
       this_.ADSLPORTCAPACITY = ?)





分享到:
评论

相关推荐

    Hibernate_Criteria条件查询数据

    在实际开发中,Hibernate Criteria查询提供了很大的便利性,尤其是在处理动态查询和复杂查询时。通过熟练掌握Criteria API,可以编写出更简洁、更易于维护的代码。希望这份资料能帮助你更好地理解和运用Hibernate的...

    hibernate_criterion.rar

    此外,Criterion还支持复杂的逻辑组合,如`Conjunction`(与)、`Disjunction`(或)和`Not`(非)操作,这使得我们可以构造出复杂的查询条件。例如: ```java Criterion condition1 = Expression.eq("status", ...

    NHibernate HQL 条件查询

    以下是几个示例,展示了如何使用QBC构建复杂条件查询: 1. **单一条件查询**: ```csharp ICriteria iReceivingCriteria = session.CreateCriteria(typeof(IEIReceivingContent)); iReceivingCriteria.Add...

    Hibernate的Criteria文档

    `Restrictions`还支持创建`Conjunction`(AND操作)和`Disjunction`(OR操作)的组合查询条件。此外,`Example`类允许根据一个对象实例创建查询条件,这对于基于对象属性的模糊匹配非常有用。 `Projection`则用于...

    Hibernate中Criteria的完整用法.docx

    - `Junction`:用于组合多个查询条件,包括`Conjunction`(AND)和`Disjunction`(OR)。 ##### 2. Projection - **概念**:`Projection` 是`Criteria` 查询的结果投影,用于指定查询结果的字段或计算。 - **实现...

    HQL与QBC的查询条件.doc

    在Java持久化框架Hibernate中,查询机制是至关重要的部分,它允许开发者检索和操作数据库中的对象。HQL(Hibernate Query Language)和QBC(Query By Example)是Hibernate提供的两种主要的查询方式,它们提供了灵活...

    Hibernate中Criteria的完整用法

    `Restrictions.conjunction()`和`Restrictions.disjunction()`分别用于构建多个条件的与和或操作。 5. **列表运算符**: `in`和`not in`操作可以使用`Restrictions.in()`和`Restrictions.not(Restrictions.in())`...

    DetachedCriteria Criteria 使用方法

    ### DetachedCriteria 使用详解 #### 一、背景与概述 在Web开发中,经常会遇到需要根据用户提供的...通过合理使用 `DetachedCriteria` 和 `Restrictions`,可以构建复杂且高效的查询逻辑,满足各种复杂的业务需求。

    java QBC常用方法

    在Java开发中,Query by Criteria(QBC)是一种非常实用且灵活的对象查询方式,它允许开发者通过构造复杂的查询条件来获取数据库中的数据。QBC通常与Hibernate框架结合使用,为开发者提供了一种更为面向对象的方式来...

    qbc表达式

    QBC是Hibernate框架提供的一个高级查询接口,允许开发者通过编程的方式构造复杂的查询条件,而不需要直接编写SQL语句。这种方式极大地提高了代码的可读性和可维护性,同时也使得查询逻辑更加灵活多变。 #### 二、...

Global site tag (gtag.js) - Google Analytics