我相信这是一种常见的情况。说我有在冬眠一对多映射: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