属于其成员实体后面的表的外键的JPA JoinColumn

属于其成员实体后面的表的外键的JPA JoinColumn,jpa,foreign-keys,Jpa,Foreign Keys,我有表表a和表b和外键表a\u id引用表a中的主键id 现在我有两个JPA实体,A和BA包含对B的引用 public class A { ... @JoinColumn(name="table_a_id") private B b; } 这会引发异常,说明在表a中找不到列表a\u id。我知道JPA正在表a中查找外键表a\u id,但如何在不将外键移动到表a的情况下解决此问题?您可以在a中使用@OneToOne(mappedBy=“a”),在B中使用@OneToO

我有表
表a
表b
和外键
表a\u id
引用
表a
中的主键
id

现在我有两个JPA实体,
A
B
<代码>A包含对
B
的引用

public class A {

    ...

    @JoinColumn(name="table_a_id")
    private B b;
}

这会引发异常,说明在
表a
中找不到列
表a\u id
。我知道JPA正在
表a
中查找外键
表a\u id
,但如何在不将外键移动到
表a
的情况下解决此问题?

您可以在
a
中使用
@OneToOne(mappedBy=“a”)
,在
B
中使用
@OneToOne
连接列
。关系的拥有方是外键所在的一方,在本例中是
B
<代码>“a”
在mappedBy中是类
B
中类型
a
字段的名称

public class A {

    ...

    @JoinColumn(name="table_a_id")
    private B b;
}
编辑


在单向关系的情况下,当外键位于目标表中时,根据,如果将
insertable=false
updateable=false
放在
@JoinColumn
中,这将指示JPA提供商在目标表中查找外键。

我知道这种关系,但如果可能的话,我特别不想让
B
知道
A
的存在。请参阅更新的答案,实际上正是@AlanHay在发布的链接中建议的。