簡體   English   中英

共享外鍵 Hibernate

[英]sharing foreign key Hibernate

我正在嘗試使用 JPA + Hibernate 對此 model 進行編碼在此處輸入圖像描述

這是我的實體一級代碼

實體一級

@Entity
public class LevelOne {
@EmbeddedId
LevelOnePK levelOnePK;

@OneToOne(mappedBy = "levelOne")
private LevelTwo levelTwo;

private String valueCol;

//getters setters omitted 
}

一級PK

@Embeddable
public class LevelOnePK implements Serializable {
private int idOne;
private int idTwo;
private int idThree;

//getters setters omitted 
}

實體二級

@Entity
public class LevelTwo {

@Id
private int LondId;

@OneToOne
@JoinColumn(name = "lone_id_one")
@JoinColumn(name = "lone_id_two")
@JoinColumn(name = "lone_id_three")
private LevelOne levelOne;

@OneToOne(mappedBy = "levelTwo")
private LevelThree levelThree;

//getters setters omitted
}

三級實體

@Entity
public class LevelThree {

@Id
private int LondId;

@OneToOne
@JoinColumn(name="l_one", referencedColumnName="lone_id_one", insertable=false, updatable=false)
@JoinColumn(name="l_two", referencedColumnName="lone_id_two", insertable=false, updatable=false)
@JoinColumn(name="l_three", referencedColumnName="lone_id_three", insertable=false, updatable=false)
private LevelTwo levelTwo;

private String valueCol;
//getters setters omitted
}

這段代碼在做什么

此代碼成功地將一級實體的 PK 映射到二級實體作為外鍵。

在我遇到問題的地方,我無法將二級實體的 map 復合外鍵轉換為三級實體並出現此錯誤

Caused by: org.hibernate.AnnotationException: referencedColumnNames(lone_id_one, lone_id_two, lone_id_three) of com.example.testQuestions.LevelThree.LevelThree.levelTwo referencing com.example.testQuestions.LevelTwo.LevelTwo not mapped to a single property

我在哪里做錯了?

您的 model 似乎不正確。 LevelThree 中的 FK 是對 LevelOne 的引用,而不是 LevelTwo。

如果您希望 LevelThree 引用 LevelTwo,則 FK 將是單個 Long,因為 LevelTwo 的 PK 是單個 Long

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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