我有table_a
和table_b
个表,外键table_a_id
引用id
中的主键table_a
。
现在我有两个JPA实体,A
和B
。 A
包含对B
。
public class A {
...
@JoinColumn(name="table_a_id")
private B b;
}
这会抛出异常,说明table_a_id
中找不到列table_a
。我知道JPA正在table_a_id
中寻找外键table_a
但是如何在不将外键移动到table_a
的情况下解决此问题?
答案 0 :(得分:1)
@OneToOne(mappedBy = "a")
可以A
,@OneToOne
可以@JoinColumn
B
。关系的拥有方是外键的一方,在这种情况下是B
。 mappedBy中的"a"
是类A
中B
类型字段的名称。
修改强>
如果是单向关系,当外键在目标表中时,根据this,如果您将insertable = false
和updateable = false
放在@JoinColumn
中,则会指示JPA提供程序在目标表中查找外键。