`

elements hql

 
阅读更多

需求:

对象之间是多对多,需要一方查询另一方,而条件是一方除了满足自身的where限制意外,还要受关联的多的一方的限制。

例子1:

public class A extends BaseEntity{  
    private Set<C> c;  
    private static final long serialVersionUID = 1L;
}

 

A中有对C的关联many-to-many,

 

现在要根据c中的属性name来查询A的信息。

 

用sql是可以写的,现在介绍hql写法。

 

用到了in 和 in elements这两个不同的用法

 

in elements 是专门针对set集合的。

 

最简单例子hql如下:

 

select distinct afrom A a,C c where c.name like '%"+value+"%'

and a in  elements(c.conPurchaseInfo);

例子2:

User和Role是多对多的关系,User和HandMedical是一对多的关系,现在根据角色名得到有HandMedical的用户:

 

String hql="from User u " +
    "where u in(select elements(r.users) from Role r where r.name=?) " +
    "and u.id in (select h.user.id from HandMedical h)";

 

 

elements(r.users)的意思是:在多对多关系中,即从Role和User的中间表中得到所有的用户。其中users是Role中设置的User的set集合属性。

 

select elements(r.users) from Role r where r.name=?的意思是:从Role中表中得到name是?的用户。

例子3:

在传递索引和元素给集合时(elements and indices函数)和传递子查询的结果集时,SQL函数any, some, all, exists, in都是被支持的:

 

可编写如下Hql 语句完成查询:

 

HQL代码 
select Blog 
    from Blog, Book   
    where Blog.author in elements(Book.authors)   
        and Book.id=?   
对应的Sql近似如下:
Sql代码
 select  blog.*   
   from  blog, book   
    where  (blog.author  in  ( select  author.authorid  
            from  book_author   
            where  book.id=book_author.bookid))   
        and  book.id=?  
 

 

 

分享到:
评论

相关推荐

    全面解析HQL语句 非常详细直接的HQL语句的功能介绍

    HQL还提供了对集合的高级操作,如`someelements`和`size`函数。例如: - `select mother from Cat as mother, Cat as kit where kit in elements(mother.kittens)`:找到所有幼猫的母亲。 通过上述分析,我们可以...

    HQL查询语言基础.

    - `select elements(employee.Name) from Employee` - 返回Employee集合中Name属性的元素数组。 HQL提供了一种强大且灵活的方式来查询和操作ORM框架中的对象,它通过类和对象的关系映射,简化了与数据库的交互,...

    HQL连接查询和注解使用总结

    - `elements()`: 获取集合中的所有元素。 #### 查询性能优化 - **Hibernate查询优化策略**: - 使用延迟加载避免加载不必要的数据。 - 通过连接查询、配置二级缓存、查询缓存等方式减少`SELECT`语句的数量。 -...

    HQL查询语言基础

    **HQL查询语言基础** HQL(Hibernate Query Language)是Hibernate框架中用于操作对象关系映射(ORM)的查询语言,它与SQL类似但更面向对象。HQL提供了丰富的功能来查询和操作数据库中的对象,使得开发人员可以更加...

    HQL查询语言基础!

    **HQL查询语言基础** HQL(Hibernate Query Language)是Hibernate框架中用于操作对象关系映射(ORM)的查询语言,它与SQL类似,但更专注于面向对象的查询。HQL允许开发者以类和对象的方式来编写查询,而不是直接...

    Hibernate element使用

    `Query` API基于HQL(Hibernate Query Language),而`Criteria` API提供了一个面向对象的查询方式。 7. **懒加载(Lazy Loading)**:Hibernate支持延迟加载机制,允许在需要时才加载关联的对象,以提高性能。这...

    多对多关系中Set的查询

    查询教某个特定学生(如name为'xxx')的所有教师,我们可以使用Hibernate的HQL(Hibernate Query Language)来实现。这里有三种不同的HSQL方法: 方法一(性能最优): ```sql select elements(s.teachers) from ...

    JPA 开发中遇到的错误

    javax.persistence.NonUniqueResultException: result returns more than one elements 此异常出现在调用`getSingleResult()`方法时,该方法预期只返回一个结果,但查询却返回了多个结果。为了避免这种异常,可以...

    jsp+hibernate实现的购物车系统

    5. **HQL与Criteria查询**:Hibernate提供自己的查询语言HQL(Hibernate Query Language),类似于SQL,以及Criteria API,用于构建更复杂的查询。 **系统实现细节可能包括:** 1. **用户界面**:使用JSP和...

    java技术资源包,内容不多,但是相当实用,可做学习,也可做资料参考和查阅!

    JSP的核心概念包括指令(Directives)、脚本元素(Scripting Elements)和动作(Actions),以及EL(Expression Language)和JSTL(JavaServer Pages Standard Tag Library)等。 Structs是一个MVC(Model-View-...

    JSP 框架搭建与Hibernate

    1. **JSP元素**:包括指令(Directives)、脚本元素(Scripting Elements)、动作(Actions)。例如,`&lt;jsp:include&gt;`用于包含其他页面,`&lt;jsp:useBean&gt;`用于实例化Java对象。 2. **JSP生命周期**:经历加载、编译...

    学生选课系统

    1. **JSP元素**:包括指令(Directives)、脚本元素(Scripting Elements)和动作(Actions)。指令如`&lt;%@ page %&gt;`用于配置页面属性,脚本元素包括脚本声明、表达式和脚本块,动作则用于调用JavaServer Pages标准...

    javaee-API

    3. **Query**:提供HQL(Hibernate Query Language)和Criteria API来查询数据。 4. **事务管理**:在Hibernate中处理事务,确保数据的一致性。 5. **缓存机制**:第一级缓存(Session级别的)和第二级缓存...

    jsp课件资料

    1. **JSP元素**:JSP页面由指令(Directives)、脚本元素(Scripting Elements)和动作(Actions)组成。指令如`&lt;%@ page %&gt;`用于设置页面属性,脚本元素包含Java变量和脚本,动作则用于调用Java小部件或者执行特定...

    Hibernate Reference Documentation3.1

    5.1.20. column and formula elements 5.1.21. import 5.1.22. any 5.2. Hibernate Types 5.2.1. Entities and values 5.2.2. Basic value types 5.2.3. Custom value types 5.3. Mapping a class more than once ...

    hibernate_reference.pdf

    - **Query Language Substitution**: Explains how to use placeholders in HQL and criteria queries. - **Hibernate Statistics**: Describes how to enable statistics collection and view performance metrics....

    hibernate_reference中文文档.pdf

    - **3.4.5 查询语言中的替换**:描述如何在 HQL 查询中使用占位符。 - **3.4.6 Hibernate 的统计 (statistics) 机制**:讲解如何收集和分析 Hibernate 运行时的统计信息。 - **3.5 日志**:介绍如何配置 Hibernate...

    hibernate 框架详解

    15. HQL: Hibernate查询语言 15.1. 大小写敏感性问题 15.2. from子句 15.3. 关联(Association)与连接(Join) 15.4. select子句 15.5. 聚集函数 15.6. 多态查询 15.7. where子句 15.8. 表达式 15.9. order ...

    最全Hibernate 参考文档

    5.1.19. 字段和规则元素(column and formula elements) 5.1.20. 引用(import) 5.1.21. any 5.2. Hibernate 的类型 5.2.1. 实体(Entities)和值(values) 5.2.2. 基本值类型 5.2.3. 自定义值类型 5.3. SQL中引号包围...

    Hibernate3+中文参考文档

    5.1.19. 字段和规则元素(column and formula elements) 5.1.20. 引用(import) 5.1.21. any 5.2. Hibernate 的类型 5.2.1. 实体(Entities)和值(values) 5.2.2. 基本值类型 5.2.3. 自定义值类型 5.3. SQL中引号包围...

Global site tag (gtag.js) - Google Analytics