因此,如果某些表缺少主鍵,那麼innodb就會導致問題。在@ElementCollection上指定一個主鍵
因此,在Hibernate中,我正在尋找一個用於指定@ElementCollection表上的主鍵並使用Set作爲下劃線數據結構的鍵。
我找到了一個有地圖主鍵的方法,但它有點奇怪,因爲我不需要地圖。
我還發現了一個與@Embeddable相關的答案,但我不需要那種複雜性。我在我的實體中使用Set或Set作爲數據結構。
任何想法如何實現?
因此,如果某些表缺少主鍵,那麼innodb就會導致問題。在@ElementCollection上指定一個主鍵
因此,在Hibernate中,我正在尋找一個用於指定@ElementCollection表上的主鍵並使用Set作爲下劃線數據結構的鍵。
我找到了一個有地圖主鍵的方法,但它有點奇怪,因爲我不需要地圖。
我還發現了一個與@Embeddable相關的答案,但我不需要那種複雜性。我在我的實體中使用Set或Set作爲數據結構。
任何想法如何實現?
如果您使用Set並使元素Column不爲null,則hibernate將使用連接列和元素列創建主鍵。
好簡單的解決方案。爲我工作。 –
非null必須使用@Column(nullable = false)進行設置,並且不能使用@NotNull註釋。 @Column(nullable = false)用於指示數據庫模式細節。請參閱[@NotNull vs @Column(nullable = false)](https://stackoverflow.com/a/7439544/1997088)以獲取更多詳細信息 – Black
@ElementCollection
不能取主鍵,因爲Embeddable
類型不能有標識符。你可以add an @OrderColumn
來優化生成SQL語句。
如果您需要一個主鍵,那麼您應該將@ElementCollection
關聯爲@OneToMany
關聯。
你有什麼參考? – plcstpierre
我在答案中鏈接的文章是一個很好的起點。然後你必須手動生成模式來創建PK,因爲Hibernate只支持實體上的PK。 –
糟糕。這不是性能問題,而是MySQL複製,所以我不認爲@OrderColumn會救我。我真正的問題是:你有沒有參考hibernate的限制? – plcstpierre
使用@ ManyTo *類似的關係:如果你有一個主鍵,那麼你有一個新的實體。 –
僅僅爲一組int創建一個新的實體是很煩人的。 – plcstpierre