2016-12-22 6 views
0

複数の関連オブジェクトを1つのトランザクションに1つずつ保存しています。子オブジェクトを保存するときには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="save"の構成でsession.save(objectA);ような何かを行うことができます。私は休止状態がどのようにカスケードを処理するのかわかりませんが、それが何か類似しているかどうかを知りたいと思います。あなたは@OneToManyを使用してエンティティの関連付けを定義するとき

答えて

0

ObjectCにまでをObjectBとをObjectBへObjectAに間のエンティティの関連があると仮定すると、あなたはなど

cascade=CascadeType.ALLを使用することができます
関連する問題