我有一個表,其中有 2 個欄位(pseudonymProfile 和 realProfile),它們都連接到同一個表。當我嘗試進行如下所示的映射時,我遇到了一個錯誤,因為這兩個欄位在它們的 @JoinColumn 注釋中使用了相同的名稱 (profile_id)。我的印象是,在定義連接列時,我需要將名稱指定為 <jointable_primarykeyofjointable> 以使 spring boot 正確執行連接,但在這種情況下它們具有相同的名稱并導致錯誤。有人可以幫我看看我錯過了什么嗎?謝謝!
@Entity
@Table(name = "book")
public class Book {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private UUID id;
@Column(name = "title")
private String title;
@ManyToOne
@JoinColumn(name = "profile_id")
private Profile pseudonymProfile;
@ManyToOne
@JoinColumn(name = "profile_id")
private Profile realProfile;
}
uj5u.com熱心網友回復:
@ManyToOne
@JoinColumn(name = "pseudonym_profile_id", referencedColumnName = "profile_id")
private Profile pseudonymProfile;
@ManyToOne
@JoinColumn(name = "real_profile_id", referencedColumnName = "profile_id")
private Profile realProfile;
只是一個應該作業的例子。JoinColumn#referencedColumnName
但我想如果你完全放棄那些@JoinColumns 一切都應該按預期作業。
更新:
我發現真正可疑的另一件事是您使用@OneToMany而不是@ManyToOne更有意義。
如果您的業務邏輯要支持一本書的多個組態檔,您將不得不Collection<Profile>使用@OneToMany.
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/440616.html
