秒の時間を取得するために節約Hibernateはシーケンス私はこのようなクラスを持っている
public class A{
private B b;
private C c;
}
私はこのオブジェクトを作成していますし、(ゲッターとセッターとし、すべてのOracle DBへのシーケンスで、それぞれを休止状態にマップ)それをデータベースに保存します。
だから私は、オブジェクトを作成し、Bのオブジェクトを移入し、私は「A」と生成された「B」配列を持つことができます
saveOrUpdate(a)
を呼び出します。私はいくつかの計算を行い、 "C"のインスタンスを作成し、それを "a"に設定します。
ここまでは、すべてがうまくいきます。私は今、 "c"のIDを取得する必要がありますので、私はフラッシュしてコミットする前にいくつかのチェックを行います。
オブジェクトが一時的ではなくなったため、saveOrUpdateはここでは機能しません。 saveOrUpdateのhibernateドキュメントによると: "オブジェクトがこのセッションで既に永続的な場合は何もしない"
アイデアはありますか?
(それが長すぎると厄介だが、それは基本的にそれだから、コードを投稿することはできません)
しかし、私はフラッシュしてコミットする前にCのIDが必要です。 "a"はすでにこのセッションで永続化されているので、変更されたかどうかをチェックしないので、saveOrUpdateを "a"で2回呼び出しても何もしません(DB制約のために)。私はクエリの文字列にそのidを持つURLを作成し、それを別のフィールドに入るテキストに入れるためにcのIdが必要です。 –
wll、saveOrUpdate(c)呼び出しを行うよりも、hibernateはあなたのテキストフィールドに使用できるidを割り当てます。フィールドがcのプロパティであれば、それはHibernateによって正しく永続化されます。 – Salandur