gpt4 book ai didi

java - 共享外键 Hibernate

转载 作者:行者123 更新时间:2023-12-01 16:49:47 25 4
gpt4 key购买 nike

我正在尝试使用 JPA + Hibernate 编写此模型 enter image description here

这是我的实体一级代码

一级实体

@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 作为外键映射到二级实体。

我遇到问题的地方我无法将二级实体的复合外键映射到三级实体并收到此错误

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

我哪里做错了?

最佳答案

您的模型似乎不正确。 LevelThree 中的 FK 是对 LevelOne 的引用,而不是 LevelTwo。

如果您希望 LevelThree 引用 LevelTwo,则 FK 将是单个 Long,因为 LevelTwo 的 PK 是单个 Long

关于java - 共享外键 Hibernate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61713567/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com