首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hibernate CascadeType内部关联注释与外部注释

Hibernate CascadeType内部关联注释与外部注释
EN

Stack Overflow用户
提问于 2015-06-03 09:17:09
回答 3查看 674关注 0票数 0

插入@OneToMany注释中的CascadeType选项与插入@Cascade中的选项有什么区别?哪一个是优先考虑的,其中一个是被忽视的?

代码语言:javascript
复制
    @OneToMany(mappedBy="page", fetch=FetchType.EAGER, cascade = {CascadeType.REMOVE, CascadeType.PERSIST})
    @Cascade({org.hibernate.annotations.CascadeType.SAVE_UPDATE, org.hibernate.annotations.CascadeType.DELETE})
    private List<Tag> tags;
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-06-03 09:49:56

没有什么不同。

如果OneToMany是JPA注释(javax.persistence.OneToMany),则不能在内部使用Hibernate‘级联’。你必须使用JPA级联。

@Cascade注释特定于hibernate,而不是JPA。

当您编写类似于: CascadeType.SAVE_UPDATE的内容时,这意味着当您使用hibernate方法'saveOrUpdate‘时会使用级联,所以当您使用hibernate方法来保存、删除、.对象使用@Cascade注释。如果使用JPA方法,请在@OneToMany注释中使用级联。

票数 1
EN

Stack Overflow用户

发布于 2015-06-03 09:43:31

Hibernate文档在这个问题上是明确的。他们特别推荐在SAVE_UPDATE的情况下使用这两种方法。

票数 1
EN

Stack Overflow用户

发布于 2015-06-03 12:02:31

如hibernate文档所示,我们可以同时使用cascadeType属性和@级联注释:

代码语言:javascript
复制
@OneToMany( cascade = {CascadeType.PERSIST, CascadeType.MERGE} )
@Cascade(org.hibernate.annotations.CascadeType.REPLICATE)
public Collection<Employer> getEmployers()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30615771

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档