0 0

关于一个HQL的写法,是关于fetch的10

订单对象(Order)和订单明细对象(OrderLineItem)是一对多的关系
其中订单明细对象(OrderLineItem)又引用商品对象(MenuItem)是多对一的关系

    public class Order {  
        private long id;  
        private List<OrderLineItem> orderLineItems = new ArrayList<OrderLineItem>();  
    }  
      
    public class OrderLineItem {  
        private MenuItem menuItem;  
    }  


相应的hbm文件
<class name="Order" table="t_Order">  
    <id name="id" type="long">  
        <column name="id" sql-type="bigint(11)"></column>  
        <generator class="native"></generator>  
    </id>  
    <list name="orderLineItems" table="orderLineItem" lazy="false" fetch="join">  
        <key>  
            <column name="order_id" sql-type="bigint(11)" not-null="true"></column>  
        </key>  
        <list-index>  
            <column name="position_for_order" sql-type="int(4)" not-null="true"></column>  
        </list-index>  
        <composite-element class="OrderLineItem">  
            <property name="itemName" type="string" column="itemName" length="100" not-null="true"/>  
            <many-to-one name="menuItem" class="MenuItem" fetch="join">  
                <column name="menuItem_id" sql-type="bigint(11)"></column>  
            </many-to-one>  
        </composite-element>  
    </list>  
</class> 


我想写一句HQL,把Order对象取出来,同时把Order对象关联的orderItem和orderItem关联的menuItem都fetch出来,
我初步的想法是写以下的一句hql:
    select distinct o from Order o left join fetch o.orderLineItems oli left join fetch oli.menuItem  

但是提示报错,是说oli必须出现在相应的select语句中,请问如果想把这些引用都fetch取出来的话应该怎么写这句Hql?谢谢
2012年8月08日 15:19

1个答案 按时间排序 按投票排序

0 0

你把hibernate的关联做好了,查询的对象会有那些对应的list的

2012年8月09日 13:12

相关推荐

    Hibernate框架]Hql语句in中带参数的写法

    一、HQL语句in中带参数的写法 在HQL语句中,使用in关键字可以实现集合参数的传递,例如: ```java String hql = "FROM Login login WHERE login.id in (:ids)"; ``` 其中,`:ids`是参数的名称,需要在map中进行设置...

    HQL的几钟常见写法

    ### HQL的几种常见写法 #### 概述 HQL(Hibernate Query Language)是Hibernate框架提供的一种查询语言,它支持面向对象的语法结构,并且能够很好地与Java对象模型进行映射。通过HQL,开发者可以更加灵活地操作...

    Hibernate-HQL语句多对多写法

    "Hibernate-HQL语句多对多写法" Hibernate 是一个流行的 Java 持久层框架,它提供了强大的对象关系映射(ORM)功能,使得开发者可以方便地与数据库交互。但是,在使用 Hibernate 时,我们经常会遇到多对多关系的...

    HQL是hibernate自己的一套查询

    在上面的示例中,我们首先通过`HibernateUtil.getSession()`方法获取到一个`Session`实例,然后定义了一个HQL查询语句,该语句用于从`Admin`表中查询`aname`为`name`的所有记录。最后通过`createQuery`方法创建查询...

    HQL语句 HQL语句

    HQL语句 HQL语句 HQL语句 HQL语句 HQL语句

    HQL Eclipse Plugins 配置教程

    所以在网上找到了一个elipse插件 英文图文教程 https://www.hibernate.org/hib_docs/tools/reference/en/html/plugins.html 下载地址 http://www.oschina.net/p/hibernate+tools 附件中为本人配置的eclipse ...

    03-HQL实用技术.pdf

    - **定义**: 单向一对多关联指的是一个父对象可以拥有多个子对象,但子对象并不知道它的父对象是谁。 - **配置方法**: - 在父对象的类中定义一个集合属性来表示子对象列表。 - 在子对象的类中通过外键字段引用父...

    HQL详解

    此外,`FETCH`连接允许在一个选择语句中同时初始化父对象及其关联的对象或集合,这对于处理集合特别有用。这可以替代映射文件中的外联接与延迟加载声明: ``` FROM Cat AS cat INNER JOIN FETCH cat.mate LEFT JOIN...

    hql ppt Hql PPt

    Hql PPt Hql PPt

    Hql多结果集

    执行上述HQL语句后,返回的结果将会是一个`List`集合,其中每个元素都是一个对应的实体对象。 ##### 2. 查询单个实体 如果只需要查询表中的某一个实体,可以通过添加`WHERE`子句来实现: ```hql FROM 实体名 ...

    HQL Hibernate查询语言

    此外,还有一个"fetch"连接允许仅仅使用一个选择语句就将相关联的对象或一组值的集合随着他们的父对象的初始化而被初始化,这种方法在使用到集合的情况下尤其有用,对于关联和集合来说,它有效的代替了映射文件中的...

    HQL语法入门学习HQL语法入门学习

    在Java开发中,Hibernate作为一个流行的ORM工具,通过HQL将对象模型与关系数据库之间的操作进行了抽象,使得开发者能够避免直接操作SQL,从而降低了数据库的耦合度,提高了代码的可读性和可维护性。HQL支持复杂的...

    Hibernate之HQL查询

    例如,假设我们有一个`Student`类,包含`name`和`age`属性,一个简单的HQL查询可能如下: ```sql SELECT s FROM Student s WHERE s.age &gt; 18 ``` 这个查询会返回所有年龄大于18岁的学生对象。 **2. HQL的SELECT...

    hibernate_hql.rar_HQL

    首先,HQL是Hibernate提供的一个强大的查询工具,它允许开发者用类名和属性名来代替表名和列名,从而避免了直接操作SQL语句的繁琐。HQL支持基本查询、聚合函数、分组、排序、子查询以及连接查询等多种操作,使得...

    hql语句大全hql语句大全

    此语句将查询`Cat`实体,并将结果集中的每个实例映射为一个名为`cat`的对象。 ##### 3. JOIN子句 JOIN子句用于处理实体之间的关联关系,如一对一、一对多等。HQL支持内连接、左外连接、右外连接和全连接,其语法...

    hql语句查询

    ### HQL语句查询知识点详解 #### 一、HQL简介 HQL(Hibernate Query Language)是Hibernate框架中...以上就是关于HQL语句查询的一些基础知识点,掌握了这些基本用法后,就可以更加灵活地使用HQL来处理各种查询需求了。

    hql详细讲解,实例演示

    `&lt;query&gt;`标签定义了一个HQL查询,查询所有ID小于给定参数的`Student`对象。`&lt;![CDATA[ ... ]]&gt;`用于包裹HQL语句,防止特殊字符被解析。`&lt;filter-def&gt;`和`&lt;filter-param&gt;`定义了过滤器的参数,`myid`类型为整数。 ...

    精通HQL(word格式)

    例如,如果你有一个继承层次结构的对象,HQL可以轻松处理这些继承关系。同样,对于多对一、一对多、多对多的关系,HQL也能提供简洁的查询语法。 【默认数据库表和数据】 在学习HQL时,通常会基于一个预先设定的...

    Hibernate 课件_HQL

    - **示例**:假设有一个`User`实体包含一个指向`Role`实体的引用属性`role`,可以通过`User`对象查询其对应的`Role`对象。 #### 联合查询 - **定义**:联合查询是将多个查询的结果合并到一个结果集中。 - **实现**...

Global site tag (gtag.js) - Google Analytics