【发布时间】:2014-09-04 11:22:45
【问题描述】:
我正在尝试解决有关同一实体上具有子类别和父类别的类别的问题。我的数据库已经设置好了,我无法更改它。所以,我以这种方式映射了我的实体:
public class Category implements Serializable {
private static final long serialVersionUID = -3432724244623524272L;
@Id
@Column(name = "id")
private Long id;
@Column(name = "key", nullable = false)
private String key;
@Column(name = "category_name", nullable = false)
private String name;
@Column(name = "description")
private String description;
@ManyToOne(targetEntity = Category.class, cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinColumn(name = "parent_key", referencedColumnName = "key")
private Category parentCategory;
@OneToMany(mappedBy = "parentCategory", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
private List<Category> childCategories;
//getters and setters ommited
}
注意,子类和父类的映射不是使用ID属性,而是使用“key”属性。这个“钥匙”不是 FK。当 JPA 试图获取数据时,我的应用程序崩溃了。但是这次崩溃看起来像一个无限循环。不抛出异常。
我做错了什么?
【问题讨论】:
-
你可能对这个Q感兴趣:stackoverflow.com/questions/5818373/…
-
只是一个建议,但我会说试运行,首先将 fetch 设置为 FetchType.LAZY。
标签: java jpa recursion jpa-2.0