【发布时间】:2019-12-29 20:22:15
【问题描述】:
在 JPA 实体中,我想映射具有相同类型实体的列。查看以下实体。
@Entity
@Table(name = "Score")
public class Score {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", nullable = false, updatable = false)
private Long id;
@Column(name = "question")
private String question;
@Column(name = "score_count")
private String scoreCount;
@Column(name = "comment")
private String comment;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "parent_id")
private Score parent;
//Getter setter goes here
}
我添加了Scope 实体的父关系。
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "parent_id")
private Score parent;
如果我这样做,Java 不会抛出任何异常。但是我想知道,这样做在设计感上有什么问题吗?这是不好的做法还是好的做法?如果为同一行设置了父级,即父级表示同一行,那么它会是一个循环吗?
我现在正在设计一些实体,所以很高兴知道这样做与否的原因。谢谢!
注意:我使用的是spring data jpa、hibernate和mysql作为数据库
【问题讨论】:
-
每个关联都应该有一个结束意味着一个父节点不能是它自己的父节点。如果一个节点没有父节点,您需要将其父节点设置为null,否则您会遇到您提到的问题.
-
见
https://stackoverflow.com/a/3393662/3479154
标签: java hibernate jpa spring-data-jpa