2013-06-26 97 views
0

我有一個與子實體一對多關聯的實體。OneToMany關聯更新,而不是插入

子實體有2列作爲PK,其中一列是父表的FK。

映射是這樣的:

@OneToMany(cascade = {CascadeType.ALL}, fetch = FetchType.EAGER) 
@JoinColumn(name="USER_RESULT_SEQUENCES.USER_RESULT_ID", referencedColumnName="USER_RESULT_ID",  unique=true, insertable=true, updatable=false) 
private List<UserResultSequence> sequences; 

我父創建的實例,並添加子實例列出,然後嘗試將其保存到數據庫中。

如果子表是空的,它將插入所有的子元素,並且完美地工作。如果子表不是空的,它會更新現有的行!

我不知道它爲什麼更新而不是插入,爲什麼會出現這種情況?

謝謝!

回答

0

這應該發生,因爲您創建的新父項,您正在將現有的子項關聯到它。只要有新的孩子加入父母(DB中不存在的孩子),這應該不是問題。

+0

但是,小孩PK由2列組成,所以每一行都是唯一的! 我在想什麼? 順便說一句,父PK沒有映射到子實體中,因爲這樣做會讓Hibernate抱怨重複的列。 – Shvalb

+0

是否有插入到具有唯一列('ID')的父表的方法,並且還添加了具有與父代相同的唯一'ID'和另一個列值的免費子代,這些值一起構成子表的PK ?? 我必須擁有它,否則我將不得不爲父進行1次插入,然後獲取其「ID」值,然後對所有孩子進行批量插入 - 這與Hibernate的想法相矛盾! – Shvalb

相關問題