【问题标题】:Hibernate save multiple related objects in same transaction on at a timeHibernate一次将多个相关对象保存在同一个事务中
【发布时间】:2016-12-22 18:14:03
【问题描述】:

我在一个事务中一次保存多个相关对象,并且在保存子对象时我正在寻找以防止ConstraintViolationException

代码如下所示。

try{
    //with given session
    session.getTransaction().begin();
    session.save(objectA);
    objectB.setObjectA(objectA);
    //do something with object B before save
    session.save(objectB);
    if(!objectB.getObjectCSet().isEmpty()){
        for(ObjectC objectC:objectB.getObjectCSet){
             objectC.setObjectB(objectB);
             //do something with object C before saving
            session.save(objectC);
        }
    }
    session.getTransaction().commit();
}catch(Exception e){
    session.getTransaction().rollback();
}finally{
    if(session != null){
        session.flush();
        session.clear();
        session.close();
    }
}

如果我没记错的话,我可以使用 cascade 并使用 cascade="save" 的配置执行类似 session.save(objectA); 的操作。我不知道hibernate如何处理级联,但我想知道它是否有类似的功能。

【问题讨论】:

    标签: hibernate


    【解决方案1】:

    假设 ObjectA 到 ObjectB 和 ObjectB 到 ObjectC 之间存在实体关联,您可以在使用 @OneToMany 等定义实体关联时使用 cascade=CascadeType.ALL

    【讨论】:

      猜你喜欢
      • 2015-10-09
      • 2021-01-10
      • 1970-01-01
      • 1970-01-01
      • 2010-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-04
      相关资源
      最近更新 更多