2010-07-16 14 views
0

Lors de l'enregistrement d'une entité à l'aide de Spring Forms et d'Hibernate, j'utilise la méthode de contrôleur suivante (simplifiée) pour ce faire.Spring 3 Forms + Entité ModelAttribute + Deteched

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

Lorsque je tente de le modifier en utilisant la même méthode que je reçois une « entité deteched » exception:

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) 
    ... 

Il coutures que l'entité est dans un état non géré après avoir soumis la forme (ce qui est logique). Comment pourrais-je sauvegarder l'entité mise à jour de toute façon? Quelle est la bonne façon de faire cela? J'ai utilisé Spring 3 et Hibernate 3.5.

Répondre

1

em.merge(p_event) fonctionnera. J'ai eu une erreur différente et je n'ai pas vu que ça faisait essentiellement ce que je cherchais.