插入@OneToMany注释中的CascadeType选项与插入@Cascade中的选项有什么区别?哪一个是优先考虑的,其中一个是被忽视的?
@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;发布于 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注释中使用级联。
发布于 2015-06-03 09:43:31
Hibernate文档在这个问题上是明确的。他们特别推荐在SAVE_UPDATE的情况下使用这两种方法。
发布于 2015-06-03 12:02:31
如hibernate文档所示,我们可以同时使用cascadeType属性和@级联注释:
@OneToMany( cascade = {CascadeType.PERSIST, CascadeType.MERGE} )
@Cascade(org.hibernate.annotations.CascadeType.REPLICATE)
public Collection<Employer> getEmployers()https://stackoverflow.com/questions/30615771
复制相似问题