Die javax.persistence-Annotationen sind eine Standardspezifikation. Die Hibernate-Annotationen repräsentieren die spezifische Implementierung von Hibernate. Sie überlappen sich meistens, aber der Hibernate CascadeType bietet einige zusätzliche Optionen, die spezifisch für Hibernate sind.
Verwenden Sie im Allgemeinen die javax.persistence-Annotationen, wann immer dies möglich ist. Verwenden Sie die Hibernate-Variante nur, wenn Sie eine Hibernate-spezifische Option benötigen und wissen, dass Sie wahrscheinlich nie zu einem anderen Persistenzanbieter wechseln müssen.
Viele Leute mischen die JPA/Hibernate-Annotationen innerhalb desselben Projekts, was eine gültige Aufgabe ist. Allerdings kann es subtile Interaktionen wie diese sein CascadeType beteiligt:
http://www.mkyong.com/hibernate/cascade-jpa-hibernate-annotation-common-mistake/
Blick in den Code, @OneToMany von JPA ist, erwartet sie eine JPA Kaskade - javax.persistence.CascadeType. Allerdings, wenn Sie es mit Hibernate Sitzung speichern, wird org.hibernate.engine.Cascade folgendes tun
Prüfung
...
Der Hibernate Speichervorgang eine ACTION_SAVE_UPDATE Aktion verursacht, aber die JPA einen ACTION_PERSIST passieren und ACTION_MERGE, es wird nicht übereinstimmen und verursachen, dass die Kaskade nicht ausgeführt wurde.