我必须做批量插入,并需要添加内容的ID。这是一个基本的例子,显示了我在做什么(这对性能来说显然是很糟糕的)。我正在寻找更好的方法来做到这一点。通过弹簧/休眠批量插入其中需要ID
public void omgThisIsSlow(final Set<ObjectOne> objOneSet,
final Set<ObjectTwo> objTwoSet) {
for (final ObjectOne objOne : objOneSet) {
persist(objOne);
for (final ObjThree objThree : objOne.getObjThreeSet()) {
objThree.setObjOne(objOne);
persist(objThree);
}
for (final ObjectTwo objTwo : objTwoSet) {
final ObjectTwo objTwoCopy = new ObjTwo();
objTwoCopy.setFoo(objTwo.getFoo());
objTwoCopy.setBar(objTwo.getBar());
persist(objTwoCopy);
final ObjectFour objFour = new ObjectFour();
objFour.setObjOne(objOne);
objFour.setObjTwo(objTwoCopy);
persist(objFour);
}
}
}
在上述持续的情况下是在内部调用
sessionFactory.getCurrentSession().saveOrUpdate();
有取回的ID,并且基于该散装插入的任何优化的方式的方法?
谢谢!
更新:得到了它与下面的添加工作,并帮助从JustinKSU
import javax.persistence.*;
@Entity
public class ObjectFour{
@ManyToOne(cascade = CascadeType.ALL)
private ObjectOne objOne;
@ManyToOne(cascade = CascadeType.ALL)
private ObjectTwo objTwo;
}
//而对于其他类和需要被保留
你有这样的例子吗?我不确定您的注释和适当的级联是什么意思。 – user973479 2011-12-21 17:38:56
如果我只是试图坚持objFour(理论上会坚持一切),我得到的错误“org.hibernate.PropertyValueException:非空属性引用空值或瞬态值” – user973479 2011-12-21 18:52:05
您使用XML或注解来配置Hibernate? – JustinKSU 2011-12-21 18:58:09