2011-01-07 58 views
3

我有2個表,查詢和元素與一對多的關係,使查詢有很多元素。如何使用Oracle的NOT NULL列約束來映射Hibernate集合?

我想在外鍵列ELEMENT.ENQUIRY_ID上執行Oracle的NOT NULL約束,因爲這是最佳做法。我有查詢對象在以下集合:

@OneToMany(cascade = CascadeType.ALL) 
@JoinColumn(name = "ENQUIRY_ID", referencedColumnName = "ID") 
private Set<Element> elements = new HashSet<Element>(); 

當我執行NOT NULL約束我收到以下堆棧跟蹤:

造成的:java.sql.BatchUpdateException:ORA-01400:不能NULL插入(「元素」。「ENQUIRY_ID」)

,因爲Hibernate顯然是堅持父前詢問元素的集合,然後回去,後來做的外鍵字段的更新。

有沒有辦法強制收集外鍵字段的NOT NULL約束?

回答

2

您是否試過nullable = false@JoinColumn

+0

謝謝axtavt,工作,很容易,當你知道如何! 我找不到任何地方的文章 - 雖然可能無法正確搜索 - 但是已經對該場景,解決方案以及Hibernate如何在http://www.andrew-eells.com/2011上解釋註釋進行了博客/ 01/09 /休眠 - 外鍵的集合 - 數據庫 - 最佳實踐/ – 2011-01-10 18:07:02