Spring 3 Forms + ModelAttribute + Deteched Entity

时间:2010-07-16 13:57:40

标签: hibernate spring entity jpa-2.0

使用Spring Forms和Hibernate保存实体时,我使用以下控制器方法(简化)来执行此操作。

@Transactional
@RequestMapping(value="/speichern", method = RequestMethod.POST)
public void saveEvent(final @ModelAttribute("__eventData") MDKEvent p_event) {
     em.persist(p_event);
} // saveEvent

当我尝试使用相同的方法编辑它时,我得到一个“被检测实体”异常:

javax.persistence.PersistenceException: org.hibernate.PersistentObjectException: detached entity passed to persist: some.package.Entity
    at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1235)
    at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1168)
    at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1174)
    ...

在提交表单后,实体处于非托管状态(这很有意义)。我怎么能保存更新后的实体呢?这样做的正确方法是什么?

我正在使用Spring 3和Hibernate 3.5。

1 个答案:

答案 0 :(得分:1)

em.merge(p_event)会奏效。我得到了一个不同的错误,并没有看到它基本上正在寻找我正在寻找的东西。