在我的项目中,我使用了hibernate,并且有一个对象至少有30个对其他对象的引用也是实体。
当然不可能只打电话
session.save(myHeavyObj);
因为它会抛出“对象引用未保存的瞬态实例”。
我想坚持所有对象。有没有简单的方法来持久化一个包含许多对其他实体对象的引用的对象?
更新
@Entity
class MyClass{
//basic elements
@ElementCollection
@OneToMany(cascade=CascadeType.ALL) //some don't have this line
@LazyCollection(LazyCollectionOption.FALSE)
List<Medication> allMeds = new ArrayList<Medication>(); //Medication is Entity
//and more lists like this.
}
解
通过添加
起作用 @OneToMany(cascade=CascadeType.ALL)
答案 0 :(得分:3)
您可以在关系注释中将CascadeType
属性设置为PERSIST
或ALL
。这将告诉hibernate将哪些动作“级联”到其他实体。这看起来像
@Entity
public class MyEntity{
@OneToOne(cascade = CascadeType.PERSIST)
private MyOtherEntity otherEntity;
}