我正在一个事务中一次保存多个相关对象,我正在寻找远离以防止保存子对象时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();
}
}
如果我没有弄错,我可以使用级联并执行类似session.save(objectA);
的配置cascade="save"
。我不知道hibernate如何处理级联,但我想知道它是否有类似的东西。
答案 0 :(得分:0)
假设ObjectA到ObjectB和ObjectB到ObjectC之间存在实体关联,当您使用@OneToMany等定义实体关联时,可以使用cascade=CascadeType.ALL
。