我有三个表,假设 A、B 和 C:
Table A
id
country
B_id
Table B
id
name
Table C
country
name
description
表 C 有一个由列组成的复合 PK:
country
和 name
。现在我想建立一个从表 A 的实体到表 C 的实体的 OneToOne 连接。
实体 C:
@Table(name = "C")
public class C {
@EmbeddedId
private CountryName id;
@Column(nullable = false)
private String description;
...
}
在实体 A 中,我正在尝试这样的事情:
@Table(name = "A")
public class A {
@Id
@Type(type = "pg-uuid")
private UUID id;
@Column(nullable = false)
private String country;
@JoinColumn(updatable = false, insertable = false)
private B b;
@OneToOne(optional = false)
@JoinColumns({
@JoinColumn(name = "country"),
@JoinColumn(name = "B.name")
private C c;
对
name
表的 B
列的引用不起作用。你能帮助了解如何实现这一目标吗? 最佳答案
我认为@JoinColumns
应该在C类,A类可以使用mappedBy
元素:
@Table(name = "A")
public class A {
@OneToOne(optional = false, mappedBy = "id")
private C c;
}
@Table(name = "C")
public class C {
@EmbeddedId
@JoinColumns({
@JoinColumn(name = "id.country"),
@JoinColumn(name = "id.name")
})
private CountryName id;
}
关于java - 具有来自相关表的列的复合 PK 的 OneToOne,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58976650/