1

在我的项目中,我使用休眠,并且有一个对象至少有 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)
4

1 回答 1

3

您可以将CascadeType属性设置为关系注释PERSISTALL关系注释。这将告诉休眠将哪些操作“级联”到其他实体。这看起来像

@Entity
public class MyEntity{
    @OneToOne(cascade = CascadeType.PERSIST)
    private MyOtherEntity otherEntity;
}
于 2013-03-21T19:58:54.273 回答