1

私のプロジェクトでは、休止状態を使用しており、エンティティである他のオブジェクトへの参照が少なくとも 30 あるオブジェクトがあります。

もちろん、ただ呼び出すことはできません。

session.save(myHeavyObj);

「オブジェクトは保存されていない一時的なインスタンスを参照しています」をスローするためです。

すべてのオブジェクトを永続化したい。他のエンティティ オブジェクトへの多くの参照を含む 1 つのオブジェクトを永続化する簡単な方法はありますか?

アップデート

@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プロパティをリレーションシップ アノテーションに設定しPERSISTたり、リレーションシップ アノテーションに設定したりできALLます。これにより、他のエンティティに「カスケード」するアクションを hibernate に指示します。これは次のようになります

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