2012-09-22 9 views

Odpowiedz

8

Adnotacje javax.persistence są specyfikacją standardów. Adnotacje typu hibernate reprezentują konkretną implementację Hibernate. Zasadniczo nakładają się, ale Hibernate CascadeType zapewnia dodatkowe opcje specyficzne dla Hibernate.

W miarę możliwości należy używać adnotacji javax.persistence. Wariantu hibernacji należy używać tylko wtedy, gdy potrzebna jest jedna z opcji charakterystycznych dla trybu hibernacji i wiadomo, że prawdopodobnie nigdy nie trzeba będzie przełączać się do innego dostawcy trwałości.

Wiele osób miksuje adnotacje JPA/Hibernate w ramach tego samego projektu, co jest słuszną czynnością. Jednak nie może być subtelne interakcje takie jak ta, z udziałem CascadeType:

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

Look w kodzie, @OneToMany jest z JPA, że oczekuje się WZP Cascade - javax.persistence.CascadeType. Jednak po zapisaniu go z hibernacji sesji org.hibernate.engine.Cascade zrobi sprawdzanie

Po ...

hibernacji uratować proces powodując działanie ACTION_SAVE_UPDATE, ale WZP będzie zdać ACTION_PERSIST i ACTION_MERGE, to nie będzie zgodne z i spowoduje, że kaskada nie zostanie wykonana.