中使用映射語義持久映射
A1 --> (B1, C1)
--> (B2, C2)
--> (B3, C1)
A2 --> (B1, C3)
--> (B2, C4)
--> (B3, C4)
這遵循的java.util.Map < B的語義,C >存儲在A.此外,每個C只出現一個實體A,所以A至C的關係是一對多。我想堅持這樣一個地圖,並在Java EE6 doc中出現類似的例子。據我所知,我的代碼(如下圖),是的例子基本相同:
@Entity
public class A implements Serializable {
@OneToMany(fetch= FetchType.EAGER)
@JoinTable(name="A_BC_MAP",
[email protected](name="A_ID"),
[email protected](name="C_ID"))
@MapKeyJoinColumn(name="B_ID")
private Map<B, C> pinnedCourses = new HashMap<Course, ScheduleTerm>();
...
}
出現如預期的A_BC_MAP數據庫模式,用一個三列連接表(A_ID,B_ID,C_ID) 。但是,主鍵約束由(A_ID,C_ID)對組成。 因此,我不能在地圖中存儲具有相同(地圖值)C的數據庫中的多個(地圖鍵)B.
這是預期的行爲?對於映射語義,我期望主鍵由(A_ID,B_ID)組成。難道我做錯了什麼?
我目前使用的是EclipseLink 2.3.0。
是的,我使用EclipseLink,並希望避免編寫自己的腳本來修復這一項。我最好去哪裏記錄這樣的錯誤? – 2012-11-16 03:36:19