`
flyleave
  • 浏览: 71682 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

HQL查询--某对象关联的集合全部或部分满足条件的查询

阅读更多

如果我们想查询出一个对象包含的集合中每个对象都满足某一特定条件,有点绕,比如说 一个学生可以有N本书,那么我们想找出 所有的书都是新书(new=true)的学生。那么一般我们可以使用下面的语句。

 

Select t from Student t left join t.books b where true=all( 
select b.new from b where b.student = t ) 

 

可是上面的语句真的正确吗,不是, 因为 有一种特殊情况,比如有个学生没有书,然而如果我们执行这个语句,这个没有书的学生还是会被查询进来的(因为Null的原因估计) ,那么我们就要修改上面的语句为

 

 

Select t from Student t left join t.books b where
exists ( select b.new from b where b.student = t ) 
and true=all( select b.new from b where b.student = t ) 

 限定了只有有书的学生,这样我们查询出的结果就不会有错了

分享到:
评论

相关推荐

    HQL查询及语法

    这里`o.myEvents.title`表示`Person`对象关联的`myEvents`集合中的`title`属性。 5. **时间范围查询** - `from Person p where p.myEvents.happenDate between :firstDate and :endDate`: 查找在指定日期范围内...

    hibernate查询语句--HQL

    HQL 是一种面向对象的查询语言,它支持标准 SQL 的大部分功能,并添加了一些额外的功能,如对象导航、集合投影等。本文将深入探讨 HQL 的几个关键方面,包括基本的查询语法、连接操作以及聚合函数等。 #### 基本...

    Hibernate HQL基础 限定查询条件 .doc

    Where 子句是HQL中用于限制查询结果的关键部分,它接受一个或多个表达式,这些表达式定义了返回的对象必须满足的条件。例如,`from Guestbook where name = 'XXX'` 将只返回名字为'XXX'的Guestbook对象。 2. **...

    HQL查询语言基础!

    - `select employee.Name from Employee as employee where employee.Name like 'J%'`:仅选择Name属性,满足条件的Employee对象。 - `select employee.ID as id1, employee.Name as name1, department.ID as id2,...

    HQL语言大全 跳楼分值

    在Hibernate中,可以通过Session的createQuery()或createSQLQuery()方法创建HQL查询对象,然后调用executeUpdate()或list()方法执行查询并获取结果。 ### 8. 注意事项 - HQL查询的结果是对象列表,而非原始数据,...

    hibernate 中HQL语句查询学习笔记

    **HQL**(Hibernate Query Language)是Hibernate框架推荐使用的查询语言,它提供了一种面向对象的方式来查询数据库,支持多种复杂的查询操作,如继承、多态及关联关系的查询。 ##### 默认数据库表和数据 在本文档...

    hql语句[定义].pdf

    通过`where`子句,可以指定查询条件,只返回满足条件的对象。例如: - `select o from Order o where o.id='1234'` 查询ID为'1234'的`Order`对象。 ### 聚合函数(Aggregate Function) HQL支持聚合函数,如`count...

    Hibernate HQL教程

    - **解释**: `ANY`表示只要有一个值满足条件即可,`ALL`表示必须所有值都满足条件。 #### 1.4 HQL的多表查询 ##### 1.4.1 表之间的关联关系 - **解释**: 多表查询涉及表之间的关联关系,例如一对一、一对多和多对...

    HQL 连接查询

    HQL(Hibernate Query Language)作为Hibernate框架提供的查询语言,允许开发者以面向对象的方式编写查询语句。在HQL中,支持多种类型的连接查询,包括隐式连接和显式连接。 #### 二、隐式连接查询 隐式连接查询是...

    hibernate3.6 文档(pdf 格式)

    - **高级集合映射**:深入探讨排序集合、双向关联集合等高级主题。 - **集合示例**:提供实际的集合映射示例代码。 #### 八、关联映射 - **单向关联**:讨论单向关联的实现,包括多对一、一对一和一对多关系。 - **...

    Hibernate笔记

    批量插入时,可以使用for循环来创建和保存对象,为了防止内存溢出,可以在满足特定条件时调用`session.flush()`将缓存中的对象持久化到数据库,然后通过`session.clear()`清除缓存。 B. 批量更新 批量更新通常使用...

    Hibernate学习笔记(3)

    - **面向对象**:HQL支持面向对象的操作,如对象的属性访问、集合的处理等。 - **动态构建查询**:可以通过程序动态地构建HQL查询字符串,实现复杂的查询需求。 #### 三、QBC简介 QBC是一种基于对象的查询方式,它...

    Hibernate-基础联表模板

    联表查询在HQL中可以通过`FROM`子句指定多个实体,`JOIN`子句定义关联条件。 5. **Criteria API** Criteria API是Hibernate提供的另一种动态查询方式,它允许在运行时构建查询,提供了更强大的灵活性。通过...

    Hibernate过滤

    查询和过滤一对一时,可以通过`Session.get()`或`Session.load()`方法直接获取关联对象,或者在HQL查询语句中加入关联条件进行过滤。 **一对多关系(One-to-Many):** 在实体间存在一个实体可以对应多个另一个...

    Hibernate的学习笔记

    - 外联接:`left join fetch`用于预加载关联集合,如`From Item i Left join fetch i.bids where ...`。 - 投影查询:可以选择需要的字段,如`select i from Item i join i.bids b where ...`。 5. **高级查询**...

    Hibernate查询语言

    6. **集合查询**:查询对象的关联集合属性。 ### 三、HQL的函数和操作符 1. **数学函数**:如MAX、MIN、SUM、AVG等。 2. **字符串函数**:如UPPER、LOWER、LENGTH等。 3. **日期时间函数**:如MONTH、YEAR、NOW等...

    注意hibernate查单一字段和查两个以上的字段返回的结果

    然而,由于Hibernate的懒加载特性,如果查询返回的对象关联了其他对象,但查询条件并未涉及这些关联,那么在初始加载时,这些关联对象可能不会被加载,而是会在第一次访问时才进行加载,这可能导致额外的数据库查询...

    hibernate 中文注解

    - **映射EJBQL/HQL查询:** 通过`@NamedQuery`注解来预定义HQL查询语句。 - **映射本地化查询:** 使用`@SQL`注解执行原生SQL查询。 #### 五、Hibernate独有的注解扩展 - **实体:** `@Entity`注解用于标记一个类为...

Global site tag (gtag.js) - Google Analytics