休眠圈出的实体
Hibernate circled entities
开门见山:
我有一个包含项目的组。我希望该关联使用外键处理,这就是它具有 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 更改为 lazy,我会收到 LazyInitializationEXception。
感谢任何帮助。
事务结束时,您将获得所有未获取对象的 LazyInitializationEXception。
如果您通过查询获取对象,请添加 join fetch,例如:
select p 来自项目 p join fetch p.group g
您可以在退出 ejb 之前通过调用 size 方法的代码获取列表。
尽可能使用 FetchType.LAZY 来防止这种情况发生,尤其是在列表中时。
开门见山: 我有一个包含项目的组。我希望该关联使用外键处理,这就是它具有 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 更改为 lazy,我会收到 LazyInitializationEXception。
感谢任何帮助。
事务结束时,您将获得所有未获取对象的 LazyInitializationEXception。
如果您通过查询获取对象,请添加 join fetch,例如:
select p 来自项目 p join fetch p.group g
您可以在退出 ejb 之前通过调用 size 方法的代码获取列表。
尽可能使用 FetchType.LAZY 来防止这种情况发生,尤其是在列表中时。