`
maomaozgc
  • 浏览: 336148 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Hibernate left join fetch拿到多的一方值问题

阅读更多
问题域:

     bill货物单 ----->{1:n关系} ware货物

Bill.java
...
Set<Ware> wareSet = new HashSet<Ware>();
....


Ware.java
...
Bill bill;
....

要使得从Bill端拿到wareset
则注意:
1. hql: "from Bill bill left join fetch bill.wareSet ware"
2. 两边建立双向关系
   bill.hbm.xml
<set name="wareSet" inverse="true">
<key column="billwareid" />
<one-to-many class="Ware"/>
</set>


ware.hbm.xml

        <many-to-one name="bill"                   
           column="billwareid"
           unique="true" />

3.注意点

   public void addBill(Bill bill) {
        billDao.insert(bill);
        Iterator<Ware> iter = bill.getWareSet().iterator();
        while(iter.hasNext()){  
        Ware ware = iter.next();
        ware.setBill(bill);//如果这句将上面的hql不会拿到wareset中的ware
        wareDao.insert(ware);        
        }
}


分享到:
评论

相关推荐

    Hibernate Fetch 的作用

    例如,在上面的代码片段中,通过`left outer join fetch parent.childs`语句,我们告诉Hibernate在加载`Parent`实体时,也一并加载所有相关的`Child`实体。这样,即使`Parent`实体的`childs`属性被标记为`lazy="true...

    hibernate 中 fetch=FetchType.LAZY 懒加载失败处理方法

    Hibernate 中 fetch=FetchType.LAZY 懒加载失败处理方法是 Hibernate 框架中的一种常见问题。当我们在 Hibernate 中使用懒加载特性时,可能会遇到 LazyInitializationException 异常,这是因为 Hibernate 的 ...

    Hibernate问题解决

    上面的代码中,`LEFT JOIN FETCH`用于获取`user`表的信息及其对应的`role`信息,其中`WHERE`子句指定了`role`表的`description`字段值。 #### 3. Hibernate批量删除和更新 - **批量删除的实现方式:** - **...

    HQL Hibernate查询语言

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

    hsql查询语法

    from Cat as cat inner join fetch cat.mate left join fetch cat.kittens 这个语句将Cat类的实例与其mate和kittens之间的关系进行关联和连接,并将相关联的对象随着父对象的初始化而被初始化。 需要注意的是,...

    Hibernate_HQL大全

    通过使用FETCH JOIN,可以一次性加载关联对象或集合,避免了多次查询数据库的问题,提高了数据加载效率。 6. **SELECT子句**:HQL的SELECT子句用于指定查询结果中包含的对象或属性。例如,“SELECT mate FROM Cat”...

    hibernate关联查询

    在处理一对多关联查询时,我们可能会遇到内连接(JOIN)和左连接(LEFT JOIN)。`JOIN`会返回两个表中存在匹配的所有记录,而`LEFT JOIN`会返回所有左侧表的记录,即使右侧表没有匹配的记录。 在HQL中,我们可以...

    Hibernate-基础联表模板

    Hibernate提供了多种联表查询方式,如:`JOIN`, `LEFT JOIN`, `RIGHT JOIN`, `FULL JOIN`等,这些都可以通过HQL(Hibernate Query Language)或者Criteria API来实现。 4. **Hibernate的HQL查询** HQL是Hibernate...

    Hibernate HQL.doc

    HQL支持四种类型的连接:inner join(内连接)、left outer join(左外连接)、right outer join(右外连接)和full join(全连接)。简写形式如`join`和`left join`也是允许的。`fetch`连接用于一次性初始化相关联...

    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性能优化.doc

    在上面的代码中,我们使用了 HQL、Criteria 和 Hibernate Annotation 中的 lazy、batchSize 和 join fetch 等方法来优化查询,避免了 1+n 问题。 Hibernate 性能优化需要我们注意批量处理和 1+n 问题,并使用相应的...

    hibernate的hql语句

    例如,`from Cat as cat left join fetch cat.kittens as kittens`会加载每只猫及其所有幼崽,即使幼崽数据未被立即使用,也能通过父对象访问。这种处理方式在优化性能时特别有用,因为它可以避免多次数据库交互。 ...

    hibernate的使用心得

    Hibernate支持多种连接类型,包括`inner join`(内连接)、`left outer join`(左外连接)、`right outer join`(右外连接)和`full join`(全连接)。`with`关键字用于提供额外的连接条件,类似于SQL中的`on`关键字...

    HIBERNATE HQL

    例如,`from Cat as cat inner join fetch cat.mate left join fetch cat.kittens`。 - 使用 `fetch all properties` 可以强制Hibernate立即加载那些默认情况下需要延迟加载的属性,从而提高第一次查询时的数据完整...

    hibernate 框架的基础四

    Query query = session.createQuery("FROM Order o LEFT JOIN FETCH o.customer c WHERE o.id = :orderId"); query.setParameter("orderId", orderId); List&lt;Order&gt; orders = query.list(); ``` #### 二、事务...

    hibernate hql基本操作

    - **左外连接**:`left outer join`允许在左侧实体未找到匹配项时返回null值,例如`left outer join cat.kittens as kitten`。 - **右外连接**:`right outer join`与左外连接相反,如果右侧实体未找到匹配项,则...

    hibernate的n+1问题.docx

    "from Customer as c left outer join fetch c.orders"); ``` 或者使用QBC(Query By Criteria)方式进行相同的操作: ```java Criteria criteria = session.createCriteria(Customer.class); criteria....

    浅谈hibernate急迫加载问题(多重外键关联)

    总结起来,处理多重外键关联的急迫加载问题,关键在于正确地使用 `left join fetch` 操作,以确保在查询时一次性加载所有所需的数据。这种方式虽然比懒加载更消耗资源,但在某些场景下,比如当关联数据总是被需要时...

    Hibernate查询语言

    left join fetch cat.kittens ``` 这将确保在获取Cat对象的同时加载其mate和kittens属性,避免后续的额外查询。 总的来说,Hibernate查询语言通过提供HQL和批量操作,使得在Java应用程序中进行数据库操作更加高效和...

    Hibernate查询语言(HQL) 语法参考

    我们也可以使用 left outer join、right outer join、full join 等连接类型。 fetch 连接 fetch 连接允许我们使用一个选择语句就将相关联的对象或一组值的集合随着他们的父对象的初始化而被初始化,例如: ``` ...

Global site tag (gtag.js) - Google Analytics