订单对象(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?谢谢
相关推荐
一、HQL语句in中带参数的写法 在HQL语句中,使用in关键字可以实现集合参数的传递,例如: ```java String hql = "FROM Login login WHERE login.id in (:ids)"; ``` 其中,`:ids`是参数的名称,需要在map中进行设置...
### HQL的几种常见写法 #### 概述 HQL(Hibernate Query Language)是Hibernate框架提供的一种查询语言,它支持面向对象的语法结构,并且能够很好地与Java对象模型进行映射。通过HQL,开发者可以更加灵活地操作...
"Hibernate-HQL语句多对多写法" Hibernate 是一个流行的 Java 持久层框架,它提供了强大的对象关系映射(ORM)功能,使得开发者可以方便地与数据库交互。但是,在使用 Hibernate 时,我们经常会遇到多对多关系的...
在上面的示例中,我们首先通过`HibernateUtil.getSession()`方法获取到一个`Session`实例,然后定义了一个HQL查询语句,该语句用于从`Admin`表中查询`aname`为`name`的所有记录。最后通过`createQuery`方法创建查询...
HQL语句 HQL语句 HQL语句 HQL语句 HQL语句
所以在网上找到了一个elipse插件 英文图文教程 https://www.hibernate.org/hib_docs/tools/reference/en/html/plugins.html 下载地址 http://www.oschina.net/p/hibernate+tools 附件中为本人配置的eclipse ...
- **定义**: 单向一对多关联指的是一个父对象可以拥有多个子对象,但子对象并不知道它的父对象是谁。 - **配置方法**: - 在父对象的类中定义一个集合属性来表示子对象列表。 - 在子对象的类中通过外键字段引用父...
此外,`FETCH`连接允许在一个选择语句中同时初始化父对象及其关联的对象或集合,这对于处理集合特别有用。这可以替代映射文件中的外联接与延迟加载声明: ``` FROM Cat AS cat INNER JOIN FETCH cat.mate LEFT JOIN...
Hql PPt Hql PPt
执行上述HQL语句后,返回的结果将会是一个`List`集合,其中每个元素都是一个对应的实体对象。 ##### 2. 查询单个实体 如果只需要查询表中的某一个实体,可以通过添加`WHERE`子句来实现: ```hql FROM 实体名 ...
此外,还有一个"fetch"连接允许仅仅使用一个选择语句就将相关联的对象或一组值的集合随着他们的父对象的初始化而被初始化,这种方法在使用到集合的情况下尤其有用,对于关联和集合来说,它有效的代替了映射文件中的...
在Java开发中,Hibernate作为一个流行的ORM工具,通过HQL将对象模型与关系数据库之间的操作进行了抽象,使得开发者能够避免直接操作SQL,从而降低了数据库的耦合度,提高了代码的可读性和可维护性。HQL支持复杂的...
例如,假设我们有一个`Student`类,包含`name`和`age`属性,一个简单的HQL查询可能如下: ```sql SELECT s FROM Student s WHERE s.age > 18 ``` 这个查询会返回所有年龄大于18岁的学生对象。 **2. HQL的SELECT...
首先,HQL是Hibernate提供的一个强大的查询工具,它允许开发者用类名和属性名来代替表名和列名,从而避免了直接操作SQL语句的繁琐。HQL支持基本查询、聚合函数、分组、排序、子查询以及连接查询等多种操作,使得...
此语句将查询`Cat`实体,并将结果集中的每个实例映射为一个名为`cat`的对象。 ##### 3. JOIN子句 JOIN子句用于处理实体之间的关联关系,如一对一、一对多等。HQL支持内连接、左外连接、右外连接和全连接,其语法...
### HQL语句查询知识点详解 #### 一、HQL简介 HQL(Hibernate Query Language)是Hibernate框架中...以上就是关于HQL语句查询的一些基础知识点,掌握了这些基本用法后,就可以更加灵活地使用HQL来处理各种查询需求了。
`<query>`标签定义了一个HQL查询,查询所有ID小于给定参数的`Student`对象。`<![CDATA[ ... ]]>`用于包裹HQL语句,防止特殊字符被解析。`<filter-def>`和`<filter-param>`定义了过滤器的参数,`myid`类型为整数。 ...
例如,如果你有一个继承层次结构的对象,HQL可以轻松处理这些继承关系。同样,对于多对一、一对多、多对多的关系,HQL也能提供简洁的查询语法。 【默认数据库表和数据】 在学习HQL时,通常会基于一个预先设定的...
- **示例**:假设有一个`User`实体包含一个指向`Role`实体的引用属性`role`,可以通过`User`对象查询其对应的`Role`对象。 #### 联合查询 - **定义**:联合查询是将多个查询的结果合并到一个结果集中。 - **实现**...