当前位置: 首页 > 知识库问答 >
问题:

Hibernate圈起来的实体[复制]

农星华
2023-03-14

直截了当地说:我有一个包含项目的小组。我想用外键处理这个关联,这就是为什么它有一个mappedby标记。我的问题是,如果我查询组,我会进入一个有限循环,其中组列出了包含该组的项目,该组列出了再次包含该组的项目。。。。。等等我的实体(最小版本):

@Entity
public class DBGroup {

@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private long id;

   @OneToMany(mappedBy = "group",cascade=CascadeType.ALL,fetch = FetchType.EAGER)
   private List<Project> projects = new ArrayList<>();
}


@Entity
public class Project {
  @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE)
    private long id;

@ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn//added this because i read somewhere this would help somehow but it didnt
    private DBGroup group;
}

有人能帮助如何避免这个循环吗?如果我在DBGroup中将fetchtype更改为懒,我就会得到一个LazyLaunalizationEXcep。

感谢您的帮助。

共有1个答案

施同
2023-03-14

当事务结束时,您会为所有未获取的对象获取LazyInitializationEXception。

如果使用查询获取对象,请添加join fetch,如下所示:

从项目p中选择p加入获取p.g组

在退出ejb之前,可以通过调用size方法的代码获取列表。

使用FetchType。为了防止这种情况,尤其是当你是一个列表的时候,你可以一直偷懒。

 类似资料:
  • 问题内容: 我目前正在研究如何在ehcache中使用RMI分发选项。我已经正确配置了ehcache.xml,复制似乎可以正常工作。但是我有两个问题: ->似乎ehcache /hibernate为每个实体创建1个缓存。很好,但是当复制到位时,它会创建1个线程/缓存进行复制。这是预期的行为吗?由于我们的域很大,因此它创建了大约300个线程,在我看来,这确实很大 ->另一个令人讨厌的结果是,心跳消息似

  • 问题内容: 我现在急切地尝试删除涉及各种关系的实体(仅)-但是,Hibernate不会删除任何内容- 在调用所有内容后保持不变。 我有5个实体(),像这样引用所涉及的实体(): 本身具有相反的关系: (不包括ID,其他列等) 每当我打电话时, 什么都不会 发生。我添加了Hibernate SQL- Output,但是看不到执行查询的单次尝试。 由于删除可能来自ajax请求和 新的 EntityMa

  • 问题内容: 我使用Hibernate 4和Spring 3。 我有两个实体。 图书实体 和作者实体 和JSON取决于pom.xml 我的根上下文在这里- … servlet-context.xml 控制器。 在我的DAO中找到findAll: 在调试中,我看到该方法返回2条记录,但是Spring无法将结果转换为JSON并返回406 HTTP错误。怎么了? 我附上我在调试中看到的图像。- http:

  • 我有一个实体用户: 和实体课程 我需要制作 user1 课程的副本(深度副本),并将此副本添加到另一个用户 2。最后,我需要用户1有课程,用户2有课程的副本。

  • 问题内容: 我有以下通常正常工作的代码: 对于我的许多实体类来说,这都是可行的。但是对于其中的两个它什么也不做,它不会引发任何异常,也不会删除该对象。来自hibernate的日志显示,hibernate执行了许多选择查询,但它甚至没有尝试执行删除。 我已经在这里和这里尝试了在其他类似问题中发现的建议,但是没有用(嗯,后者建议我不能使用,但是我只是在和之间加上了语句)。 我似乎找不到这两个类比其他类

  • 我有以下通常运行良好的代码: 对于我的许多实体类,这很有效。但是,对于其中两个,它什么都不做,它不会引发任何异常,也不会删除对象。来自Hibernate的日志显示Hibernate执行了许多选择查询,但它甚至不会尝试执行删除。 我已经尝试了在这里和这里的其他类似问题中找到的建议,但无济于事(好吧,后者建议我不能使用,但我只是将语句括在和之间)。 我似乎找不到这两个班比其他班多(或少)什么。他们使用