中使用spring 3.1,hibernate 4.0.1.FINAL和spring-data-jpa 1.0.2.RELEASE創建3或4路多對多關聯映射爲實體類。所以我們假設我在class A
和class B
之間有many-to-many
,我將其映射爲ABMap
。我還在class C
和class D
之間有另一個多對多映射爲CDMap
。 我有一個類ABMapID
註釋@Embeddable如何在JPA 2
@Embeddable
public class ABMapID{
private String aID;
private String bID;
}
//... setters and getters
所以映射本身低於
@Entity
public class ABMap {
@Id
@AttributeOverrides({
@AttributeOverride(name = "aID", column = @Column(name = "a_id",insertable = false, updatable = false)),
@AttributeOverride(name = "bID", column = @Column(name = "b_id", insertable = false,updatable = false))
})
private ABMapID ID;
@ManyToOne(targetEntity = A.class)
@JoinColumn(name = "a_id",insertable = false,updatable = false)
private A a;
@ManyToOne(targetEntity = B.class)
@JoinColumn(name = "b_id", insertable = false, updatable = false)
private B b;
//.... setters and getters
}
現在讓我們說,我們要改變ABMap
到ACDMap
其中ACDMapID
由與援助, CDMapID(本身由cID,dID組成)。 所以我的新關聯ID ACDMapID
@Embeddable
public class ACDMapID {
private String aID;
private CDMapID cdmapID;
}
and the entity is mapped like so
@Entity
public class ACDMap {
@Id
@AttributeOverrides({
@AttributeOverride(name = "aID", column = @Column(name = "a_id",insertable = false, updatable = false)),
@AttributeOverride(name = "cdmapID", column = @Column(name = "dcmap_id", insertable = false,updatable = false))
})
private ACDMapID ID;
}
那麼運行這個給我這個錯誤
產生的原因:org.hibernate.AnnotationException:從ACDMap外鍵闖民宅CDMap有錯號碼列。應該是2
有沒有辦法做那個映射?最好是我想保留CDMap。