程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Hibernate Cascade =“ All-delete-orphan”,不删除孤立项大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决Hibernate Cascade =“ All-delete-orphan”,不删除孤立项?

开发过程中遇到Hibernate Cascade =“ All-delete-orphan”,不删除孤立项的问题如何解决?下面主要结合日常开发的经验,给出你关于Hibernate Cascade =“ All-delete-orphan”,不删除孤立项的解决方法建议,希望对你解决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

看来我的设置正确。

我一定要吗

  1. 首先从数据库中的虚拟对象对象中加载相应的对象(使用我的反序列化对象具有的ID)
  2. 删除对其他对象的引用
  3. 保存更改
  4. 用我的反序列化对象更新

大佬总结

以上是大佬教程为你收集整理的Hibernate Cascade =“ All-delete-orphan”,不删除孤立项全部内容,希望文章能够帮你解决Hibernate Cascade =“ All-delete-orphan”,不删除孤立项所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: