0 0

hibernate多对多出现set不断循环 15

单位dept表和分组group表,一个组可以有多个单位,一个单位可以在多个组。

class Dept{
  ....
  Set<Group> groups;
  get/set....
}
 
class Group{
 ....
 set<Dept> depts;
 get/set....
}

 配置

Dept

 

 <set name="groups" table="DEPT_TO_GROUP" inverse="true"  lazy="true" cascade="all">
            <key column="DEPTID"/>
            <many-to-many class="com.Group" column="GROUPID"  />
  </set>

 

 

Group

 

 <set name="groups" table="DEPT_TO_GROUP"  lazy="true" cascade="none">
            <key column="DEPTID"/>
            <many-to-many class="com.Group" column="GROUPID" />
  </set>

 

 

 在一次偶然的情况下,出现了下面的错误【之前一直用没发现这个问题的存在,当数据量大后且是在调用set<>的时候才报错,获取list是没问题的,而set<>既不是null,也没有size】


后来查看读取数据的时候发现,set里面的数据会不断的去找下一个数据

请问是哪里出了问题?

 


问题补充:使用 getHibernateTemplate().find("from Dept t") 也会读出无限循环的set<>

问题补充:不好意思,上面有些复杂黏贴错了
Dept的配置是
  <set name="groups" table="DEPT_TO_GROUP" inverse="true"   lazy="true">
            <key column="DEPTID"/> 
            <many-to-many class="com.bean.Group" column="GROUPID" />
   </set>
Groups的配置是
<set name="depts"  table="DEPT_TO_GROUP"  lazy="true" cascade="none"  >
            <key column="GROUPID"/>
            <many-to-many class="com.bean.Dept" column="DEPTID" />
  </set>
2013年12月23日 09:27

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

0 0

都是延迟加载的还会这样吗

2013年12月24日 11:15
0 0

您这个是一个表内的多对多吧,也有可能弄混了哦

2013年12月24日 08:44
0 0

呃,您重写了equals和hashCode了吗

2013年12月24日 08:41
0 0

两个set都是groups?

2013年12月23日 11:08

相关推荐

    hibernate一对多双向

    在探讨“Hibernate一对多双向”这一主题时,我们首先需要理解Hibernate框架以及它在Java开发中的重要性。Hibernate是一个开放源代码的对象关系映射(ORM)框架,它为Java应用程序提供了一种将对象模型与数据库模型相...

    Hibernate电子书(全)

    Hibernate支持一对一和多对多关系的映射,分别通过`@OneToOne`和`@ManyToMany`注解实现。这些映射策略使得复杂的关联关系能够在Hibernate中得到清晰的表示。 #### 延迟加载(LazyInitialization) 延迟加载是一种...

    Hibernate一对多单向关联映射

    在Java的持久化框架Hibernate中,一对多关系是常见的实体关联映射方式,它表示一个实体可以与多个其他实体相对应。本篇文章将深入探讨Hibernate中一对多单向关联映射的概念、配置以及其实现方法。 一、概念理解 一...

    hibernate开发一对多和多对一的坑1

    在使用Hibernate进行Java对象关系映射(ORM)开发时,经常会遇到一对多和多对一关系的处理。这些关系在数据库中很常见,比如一个部门可以有多名员工,而每个员工则隶属于一个部门。在本篇文章中,我们将深入探讨在...

    Hibernate 一对多双向映射及乐观锁使用

    **标题解析:** "Hibernate 一对多双向映射及乐观锁使用" 在Java开发中,Hibernate作为一款流行的ORM(对象关系映射)框架,能够帮助开发者将数据库操作转化为面向对象的编程,简化了数据访问层的实现。"一对多"是...

    hibernate外键实现一对一双向关联关系源码

    本主题将深入探讨如何使用Hibernate实现一对一双向关联关系,并通过源码解析这一过程。 一对一双向关联关系指的是两个实体类之间存在一对一的关系,且在各自的类中都可以直接访问对方。这种关联可以通过注解或XML...

    Hibernate工作原理及为什么要用

    5. **集合类型选择**:Bag用于一对多,Set用于多对多,以确保无重复。 6. **显式多态**:在继承类中使用,优化查询效率。 7. **数据库设计**:尽量减少字段数量,但增加表关联,配合二级缓存,保证性能。 **Struts...

    Hibernate课程的总结

    3. 关系映射:处理一对一、一对多、多对多关系,如`@OneToOne`、`@OneToMany`、`@ManyToOne`和`@ManyToMany`。 **四、Session与Transaction** 1. Session:是Hibernate的主要工作单元,负责保存、更新和删除对象,...

    hibernate说明文档

    - **关联映射**:在Hibernate中,可以通过不同的方式来映射实体之间的关联关系,如一对一、一对多、多对多等。 - **单向Set-based关联**:使用`set`元素定义一个实体对另一个实体的单向关联。 - **使关联工作**:...

    hibernate 3.2中文手册 中文文档

    - 展示如何映射具有关联关系的类,例如一对多、多对一等。 - **1.3.2 单向Set-based的关联** - 解释单向关联的实现方法,特别是如何使用集合类型进行映射。 - **1.3.3 使关联工作** - 提供实现这些关联的实际...

    Hibernate3.5 PPT3.5

    总的来说,"Hibernate3.5 PPT3.5"将带你深入理解Hibernate框架,特别是如何处理一对多和多对多关系,帮助你在实际开发中更好地利用Hibernate来构建高效、可维护的Java应用。这份PPT是初学者和进阶者提升Hibernate...

    Hibernate3 学习笔记.ppt

    1. 合理设计实体类,避免过多的一对多关系。 2. 使用懒加载以提高性能。 3. 使用事务管理,确保数据一致性。 4. 避免在循环中执行查询,可能导致大量数据库交互。 5. 使用二级缓存,提高应用性能。 6. 谨慎使用级联...

    如何对多对多关系获得的set集合中的记录进行分页

    对于处理多对多关系的数据,分页显得更为复杂,因为涉及到的对象关联和集合的处理。本篇将详细阐述如何在SSH框架下实现分页,特别是针对多对多关系的集合进行分页。 首先,我们需要创建一个`PageModel`类,用于存储...

    Hibernate对象关系

    在Java对象模型中,双向的多对多关联可以通过`Student`中的`Set&lt;Course&gt; courses`和`Course`中的`Set&lt;Student&gt; students`来实现。 ```java public class Student { private int id; private Set&lt;Course&gt; courses ...

    Hibernate总结

    - **多对一和一对一**:`outer-join`属性和关联类的`lazy`属性组合使用,决定检索策略。 **四、Hibernate的检索方式** 1. **HQL检索方式** - Hibernate Query Language (HQL)是一种面向对象的查询语言,类似于...

    hibernate N+1问题解决办法

    当我们在Hibernate中使用懒加载或集合查询时,如果在一次循环中对每个实体逐一触发关联对象的加载,就会产生N+1次数据库查询。例如,假设有一个`Order`实体,它有一对多的关联关系到`Product`实体,我们想要获取所有...

    在Hibernate中处理批量更新和批量删除

    在Hibernate中,最直观的批量更新方式是通过循环遍历查询结果集,并对每个实体进行更新,然后提交事务。例如: ```java Transaction tx = session.beginTransaction(); Iterator&lt;Customer&gt; customers = session....

    深入浅出hibernate.rar

    Hibernate支持一对一、一对多、多对一、多对多等多种关联关系的映射,以及集合类型的处理,如List、Set等。 10. 性能优化技巧: 通过批处理、延迟加载、缓存策略等手段,可以显著提升Hibernate应用的性能。正确...

    在Hibernate应用中处理批量更新和批量删除

    批量更新是指对数据库中的多条记录进行一次性更新操作,相较于单条记录更新,批量更新能够显著提高数据处理效率,减少网络通信和数据库资源消耗。在Hibernate中,默认情况下,每个实体的修改都会触发一次数据库更新...

    hibernate-4.2.3-doc

    1. 集合映射:处理一对多、多对一、多对多关系,如 Set、List、Map 的映射。 2. 继承映射:支持单表、表-per-hierarchy、表-per-subclass 等继承策略。 3. 联接查询和子查询:优化查询性能,避免 N+1 问题。 4. 延迟...

Global site tag (gtag.js) - Google Analytics