I\'m using Hibernate 3.6 and have my code annotated (versus using hibernate mapping files). I ran into the known \"problem\" of using JPA cascading options that are not com
From Hibernate reference documentation
For each basic operation of the Hibernate session - including persist(), merge(), saveOrUpdate(), delete(), lock(), refresh(), evict(), replicate() - There is a corresponding cascade style
If you see CascadeType documentation, you will see each cascade style for each session operation
How do I decide whether to use JPA cascade options or the Hibernate @Cascade annotation instead ?
Prefer to use plain JPA cascade style when using a plain JPA application. If using Hibernate, prefer Hibernate cascade style
This behaviour is documented in 11.11. Transitive persistence.
Hibernate cascade types correspond to the individual operations, so you need all three of them.
In most cases you need either CascadeType.ALL or no cascading at all. In that case JPA annotation is enough, since JPA's CascadeType.ALL covers all Hibernate operations as well. Otherwise, if you need fine-grained cascading control (and use Hibernate's Session interface), you need Hibernate's @Cascade.
It's not a bug in JPA implementation, because if you use JPA's EntityManager everything works fine. This problem exists only if you combine JPA annotations with Hibernate's Session interface.