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查询提供了很大的便利性,尤其是在处理动态查询和复杂查询时。通过熟练掌握Criteria API,可以编写出更简洁、更易于维护的代码。希望这份资料能帮助你更好地理解和运用Hibernate的...
此外,Criterion还支持复杂的逻辑组合,如`Conjunction`(与)、`Disjunction`(或)和`Not`(非)操作,这使得我们可以构造出复杂的查询条件。例如: ```java Criterion condition1 = Expression.eq("status", ...
以下是几个示例,展示了如何使用QBC构建复杂条件查询: 1. **单一条件查询**: ```csharp ICriteria iReceivingCriteria = session.CreateCriteria(typeof(IEIReceivingContent)); iReceivingCriteria.Add...
`Restrictions`还支持创建`Conjunction`(AND操作)和`Disjunction`(OR操作)的组合查询条件。此外,`Example`类允许根据一个对象实例创建查询条件,这对于基于对象属性的模糊匹配非常有用。 `Projection`则用于...
- `Junction`:用于组合多个查询条件,包括`Conjunction`(AND)和`Disjunction`(OR)。 ##### 2. Projection - **概念**:`Projection` 是`Criteria` 查询的结果投影,用于指定查询结果的字段或计算。 - **实现...
在Java持久化框架Hibernate中,查询机制是至关重要的部分,它允许开发者检索和操作数据库中的对象。HQL(Hibernate Query Language)和QBC(Query By Example)是Hibernate提供的两种主要的查询方式,它们提供了灵活...
`Restrictions.conjunction()`和`Restrictions.disjunction()`分别用于构建多个条件的与和或操作。 5. **列表运算符**: `in`和`not in`操作可以使用`Restrictions.in()`和`Restrictions.not(Restrictions.in())`...
### DetachedCriteria 使用详解 #### 一、背景与概述 在Web开发中,经常会遇到需要根据用户提供的...通过合理使用 `DetachedCriteria` 和 `Restrictions`,可以构建复杂且高效的查询逻辑,满足各种复杂的业务需求。
在Java开发中,Query by Criteria(QBC)是一种非常实用且灵活的对象查询方式,它允许开发者通过构造复杂的查询条件来获取数据库中的数据。QBC通常与Hibernate框架结合使用,为开发者提供了一种更为面向对象的方式来...
QBC是Hibernate框架提供的一个高级查询接口,允许开发者通过编程的方式构造复杂的查询条件,而不需要直接编写SQL语句。这种方式极大地提高了代码的可读性和可维护性,同时也使得查询逻辑更加灵活多变。 #### 二、...