大佬教程收集整理的这篇文章主要介绍了Hibernate Cascade =“ All-delete-orphan”,不删除孤立项,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
从根本上讲,无需清除即可执行此操作。
我要做的就是调用正确的函数。
采用 HibernateDaoSupport.getHibernateTemplate().merge(object)
在我的代码中,我首先测试jackson的反序列化对象是否附加了ID
如果是这样,我就叫保存,否则就叫合并。
if(obj.getID()){
myDAO.save(obj);
}else{
myDAO.merge(obj);
}
我的DAO的合并功能就是这样定义的。
public voID merge(E transIEntObject) {
getHibernateTemplate().merge(transIEntObject);
}
这将删除原本应该的。
如果有人遇到相同的问题,请不要犹豫,我愿意为您提供帮助。
我无法通过以下映射使用Hibernate删除孤立节点
@OneToMany(fetch = FetchType.LAZY,mappedBy = "seizure",orphanRemoval=true)
@JsonManagedReference
@Cascade({CascadeType.ALL,CascadeType.DELETE_ORPHAN})
public Set<SubstanceIdentified> getSubstanceIdentifieds() {
return this.substanceIdentifieds;
}
.hbm.xml映射是这样的
<set name="substanceIdentifieds" table="substance_identified" inverse="true" lazy="true" fetch="select" cascade="all-delete-orphan">
<key>
<column name="seizure_id" not-null="true" />
</key>
<one-to-many class="org.unodc.incbszdb.db.base.SubstanceIdentified" />
</set>
我使用Spring MVC和Jackson进行JSON到Hibernate类的映射
@RequestMapping(value = { "/save.json" },method = RequestMethod.POST)
public ModelMap save(@RequestBody Seizure seizureObj,Model model) {
seizureService.saveOrUpdate(seizureObj);
注意:
seizureObj
集合中只有两个 NEW 条目substanceIdentifieds
。
的id属性seizureObj
设置为数据库中的现有记录。但是当我调用saveOrUpdate时,现有记录(孤立)不会被删除。
扣押服务使用Spring的
getHibernateTemplate.saveOrUpdate
看来我的设置正确。
我一定要吗
?
以上是大佬教程为你收集整理的Hibernate Cascade =“ All-delete-orphan”,不删除孤立项全部内容,希望文章能够帮你解决Hibernate Cascade =“ All-delete-orphan”,不删除孤立项所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。