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