我想知道兩個表之間是否可以有一對多的jpa 2.x關係。我期待這樣的事情: (我搜索了很多與谷歌,找出沒有成功類似的情景)JPA 2.x單向一對多關係
CUSTOMER
ID NAME RELATEDCOLORS
1 John 10
2 Albert 20
3 Maria 10
4 Smith null
COLORS
ID FATHERID COLOR
1 10 Red
2 10 Green
3 10 Blu
4 20 Cyan
正如你可以看到每個人都有相應的顏色。所以,約翰和瑪麗亞的顏色都是紅色,綠色和藍色。對於艾伯特來說,顏色是青色,而史密斯則沒有顏色。
我已經試過這樣的事情:
客戶實體
....
@Id
@Column(name = "ID", nullable = false)
private long iId;
@Column(name = "NAME")
private String iName;
@Column(name = "RELATEDCOLORS", nullable = true)
private Long iRelatedColors;
@JoinColumn(name = "FATHERID",referencedColumnName="RELATEDCOLORS", nullable=true)
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
private List<Colors> iColors;
....
請注意,我用了「龍iRelatedColors」,而不是「長iRelatedColors」因爲iRelatedColors屬性可以爲空
顏色實體
....
@Id
@Column(name = "ID", nullable = false)
private long iId;
@Column(name = "FATHERID", nullable = false)
private long iFatherId;
@Column(name = "COLOR")
private String iColor;
....
我不會l IKE有型客戶的屬性在顏色實體
我需要的是:
當讀取一個客戶,那麼列表的iColor必須當調用相應get填充...方法
當我在更改iColors列表(例如:添加新顏色或刪除顏色)後更新客戶 時,顏色實體也必須更新。
而且我所有我需要的只有:
- Customer表
的RELATEDCOLORS列使用一個唯一的編號填寫(例如:10,20,30,40 ECC)
在Customer表中,RELATEDCOLORS列必須始終不爲空,如果Colors表中存在相應的ID,則該列不會爲空。 如果其中一個CUSTOMER行在RELATEDCOLORS列中有一個空值,那麼在運行期間會有一個由Hibernate拋出的NullPointerException異常。
使用我顯示給你的數據不起作用,我不明白爲什麼。
在此先感謝您的幫助。
你一對多的映射將明顯增加FK到顏色,所以如果你不這樣做像它然後刪除該映射,並把OneToOne/ManyToOne和FK將在客戶。 –
客戶>顏色的關係顯然是@ManyToOne,所以我不確定你爲什麼要將它映射爲@OneToMany? –
大家好,謝謝你的回答。尼爾,請問你能更具體些嗎? Alan,從表格數據中可以看出,客戶>顏色之間的關係是OneToMany。例如Jhon的顏色爲紅色,綠色和藍色 謝謝 – gpezzini