@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;
答案 0 :(得分:1)
Hibernate Documentation,对此问题很清楚。 他们特别建议在SAVE_UPDATE的情况下使用它们。
答案 1 :(得分:1)
没有区别。
如果OneToMany是JPA注释(javax.persistence.OneToMany),则不能使用Hibernate&#39; cascade&#39;内。你必须使用JPA级联。
@Cascade注释特定于hibernate,而不是JPA。
当您编写类似:CascadeType.SAVE_UPDATE之类的内容时,这意味着当您使用hibernate方法时会使用级联&#39; saveOrUpdate&#39;,因此当您使用hibernate方法保存,删除时,...对象使用@Cascade注释。如果使用JPA方法,请在@OneToMany注释中使用级联。
答案 2 :(得分:1)
如hibernate文档中所示,我们可以使用cascadeType属性和@cascade注释:
@OneToMany( cascade = {CascadeType.PERSIST, CascadeType.MERGE} )
@Cascade(org.hibernate.annotations.CascadeType.REPLICATE)
public Collection<Employer> getEmployers()