2012-09-22 38 views

Respuesta

8

Las anotaciones de javax.persistence son una especificación de estándares. Las anotaciones de hibernación representan la implementación específica de Hibernate. En su mayoría se superponen, pero Hibernate CascadeType proporciona algunas opciones adicionales específicas para Hibernate.

En general, use las anotaciones javax.persistence siempre que sea posible. Utilice la variante de Hibernate solo si necesita una de las opciones específicas de Hibernate y sepa que probablemente nunca tenga que cambiar a otro proveedor de persistencia.

Muchas personas mezclan las anotaciones JPA/Hibernate dentro del mismo proyecto, lo cual es una acción válida. Sin embargo, no puede haber interacciones sutiles como éste implica CascadeType:

http://www.mkyong.com/hibernate/cascade-jpa-hibernate-annotation-common-mistake/

mirada en el código, @OneToMany es de APP, se espera una cascada JPA - javax.persistence.CascadeType. Sin embargo cuando se guarda con Hibernate sesión , org.hibernate.engine.Cascade hará el siguiente comprobación

...

La hibernación guardar proceso que causa una acción ACTION_SAVE_UPDATE, pero la APP pasará un ACTION_PERSIST y ACTION_MERGE, no coincidirá con y hará que la cascada no se ejecute.

Cuestiones relacionadas