[英]JPA - Mapping a column with same entity
在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不會拋出任何異常。 但是我想知道,在設計意義上這樣做有什么問題嗎? 這是不好還是好的做法? 如果將parent設置為同一行,即parent表示同一行,那么它將是循環嗎?
我現在正在設計一些實體,所以很高興知道這樣做或不這樣做的原因。 謝謝!
注意:我正在使用spring數據jpa,hibernate和mysql作為數據庫
沒問題。 這種類型的自引用關系非常普遍,尤其是在處理分層數據時。
在OOP思維方式中,我們想着重於抽象而不是細節,因為它易於理解。 因此,如果父子實體確實是相同的抽象並且本質上具有某些共同的行為,那么正確地應用此模式甚至是很好的寄生蟲。 將父級和子級建模為相同的類型,使我們可以在將邏輯寫入它們時將它們視為相同的抽象。
如果將parent設置為同一行,即parent表示同一行,那么它將是循環嗎?
是。 這將形成一個循環。這就是為什么在為孩子設置父級時,應檢查父級不能是孩子本身,這應視為應在代碼中強制執行的業務要求之一。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.