繁体   English   中英

JPA Cascade注释与Hibernate Cascade注释之间的区别

[英]Difference between JPA Cascade annotations and Hibernate Cascade annotation

我正在尝试使用Hibernate注释。 当我尝试使用Cascading时,我在Eclipse intellisense中得到两个选项:

    javax.persistence.CascadeType and org.hibernate.annotations.CascadeType

在休眠CascadeType中 ,给出了许多选项,而不是JPA的选项。

一个人有什么优势吗?

javax.persistence注释是标准规范。 hibernate注释代表了Hibernate的具体实现。 它们大多重叠,但Hibernate CascadeType提供了一些特定于Hibernate的附加选项。

通常,尽可能使用javax.persistence注释。 仅当您需要特定于Hibernate的选项之一时才使用Hibernate变体,并且知道您可能永远不需要切换到另一个持久性提供程序。

许多人在同一个项目中混合使用JPA / Hibernate注释,这是一个有效的事情。 但是,可能存在一些微妙的交互,例如涉及CascadeType的交互:

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

查看代码,@ OneToMany来自JPA,它期望一个JPA级联--javax.persistence.CascadeType。 但是,当您使用Hibernate会话保存它时,org.hibernate.engine.Cascade将执行以下检查

...

Hibernate保存过程将导致ACTION_SAVE_UPDATE操作,但JPA将传递ACTION_PERSIST和ACTION_MERGE,它将不匹配并导致级联无法执行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM