我尝试了一些Hibernate注释。当我尝试使用Cascading时,我在Eclipse中得到了两个选项intellisense:
javax.persistence.CascadeType and org.hibernate.annotations.CascadeType
在hibernateCascadeType中,提供的选项比JPA的选项多。
一个比另一个有优势吗?
javax.persistence注释是一个标准规范。hibernate注释表示hibernate的特定实现。它们大多重叠,但Hibernate级联类型提供了一些特定于Hibernate的附加选项。
通常,只要可能,就使用javax.persistence注释。只有当您需要特定于Hibernate的选项之一,并且知道您可能永远不需要切换到另一个持久性提供程序时,才可以使用Hibernate变体。
许多人将JPA/Hibernate注释混合在同一个项目中,这是一件有效的事情
http://www.mkyong.com/hibernate/cascade-jpa-hibernate-annotation-common-mistake/
在代码中,@OneToMany来自JPA,它期望JPA级联-javax.persistence.CastcadeType。但是,当您使用Hibernate保存它时session,org.hubinate.engine.cacade将执行以下检查
…
休眠保存过程将导致ACTION_save_ UPDATE操作,但是JPA将通过ACTION_PERSIST和ACTION_MERGE,它不会匹配并导致级联执行失败。