簡體   English   中英

JPA-映射具有相同實體的列

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM