我相信這是一種常見的情況。說我有在冬眠一對多映射:Category
有很多Items
什麼是一個多休眠的最佳做法
類別:
@OneToMany(
cascade = {CascadeType.ALL},fetch = FetchType.LAZY)
@JoinColumn(name="category_id")
@Cascade(
value = org.hibernate.annotations.CascadeType.DELETE_ORPHAN
)
private List<Item> items;
項目:
@ManyToOne(targetEntity=Category.class,fetch=FetchType.EAGER)
@JoinColumn(name="category_id",insertable=false,updatable=false)
private Category category;
一切工作正常。我用Category
來完全控制Item
的生命週期。但是,當我編寫代碼更新Category
時,首先從數據庫中獲取Category
。然後將其傳遞給UI。用戶填寫Category
的更改值並傳回。問題出在這裏:因爲我只傳遞Category
信息,而不是Items
,因此Items
集合將爲空。當我撥打saveOrUpdate
時,它會清除所有關聯。
任何建議什麼是最好解決這個問題?我認爲Category
控制Items
的好處是可以輕鬆掌握Items
的順序,而不是雙向直接混淆。
但是你想更新Category
本身的情況呢?首先加載併合並?
我可以想到兩種可能的方式: 1.先獲取類別,然後根據UI返回的對象設置更新它的值。然後堅持下去。 2.使用醜陋的HibernateTemplate.bulkUpdate這是純sql。 – Patrick 2010-05-20 04:33:31
我錯了關於HibernateTemplate.bulkUpdate。它使用HQL。目前我正在這樣做。但我仍然願意聽到關於此主題的任何意見 – Patrick 2010-05-23 06:45:14