0
我有一個類似的問題如下,但解決方案並沒有解決我的問題。休眠 - 複合主鍵包含外鍵
hibernate composite Primary key contains a composite foreign key, how to map this
我試圖加入2個表,每一個具有與部分外鍵引用的複合主鍵。
Table A
--------
f1 (pk)
f2 (pk)
f3 (pk)
f4 (pk)
Table B
--------
f1 (pk, fk)
f2 (pk, fk)
f5 (pk)
f6 (pk)
I created A, APK, B, BPK
在答:
private Set<B> bSet;
@OneToMany(targetEntity=B.class, cascade = CascadeType.ALL, mappedBy= "bpk.a")
public Set<MovesEntity> getBSet() {
return bSet;
}
在BPK:
@ManyToOne(fetch=FetchType.EAGER)
@JoinColumns({
@JoinColumn(name="f1", referencedColumnName="f1", nullable=false, insertable=false, updatable = false),
@JoinColumn(name="f2", referencedColumnName="f2", nullable=false, insertable=false, updatable = false)
})
public A getA() {
return a;
}
上述方法給了我這個例外:
AnnotationException: referencedColumnNames(f1, f2) of entity.BPK.bpk.a
referencing com.example.entity.A not mapped to a single property
能否請你幫忙嗎?
JPA不允許部分主鍵。 B需要A的每個主鍵字段的外鍵來唯一標識A.如果只有f1和f2唯一標識一個A,那麼它們應該是它的主鍵(而不是f2和f3)。 – Chris
非常感謝克里斯。這清除了我的問題!在這種情況下,我必須在APK中將f3和f4註釋爲@Basic,而不是id或embeddedId。我只使用此服務來選擇,所以我想它沒關係? – Mjasmin
f3和f4不應該在APK中,只是以A爲基礎。 – Chris