2012-03-12 4 views
0

Oracleでは、RETURNING句を使用して更新されたレコードを返す更新クエリを作成できます。HibernateでUPDATE RETURNINGクエリを作成する

Hibernateにも同様の機能がありますか?

+0

保存後のオブジェクトが既に更新されていませんか? – DrColossos

+0

はい更新後のオブジェクトの保存はすでに更新されています。 – Ishmael

+0

私たちのケースでは、デザインアプローチのほうがいいと思います。これらの要求は、webservice呼び出しを介して開始され、DBを更新します。私たちは、更新されたオブジェクトまたは作成されたオブジェクトを、適切なHTTPステータスを持つユーザーに返すことにしました。私たちのコードでは、Webスタックの更新を追跡することを選択しました。 – hypno7oad

答えて

0

Session.saveOrUpdate()に渡されたオブジェクトが更新されたインスタンスであるため、Hibernateが更新されたインスタンスを返す必要はありません。データベース生成値(シーケンス、トリガ、デフォルトなど)は、の後にSession.saveOrUpdateの後に設定され、それに応じてアノテーションが付けられます(またはXMLマッピングファイルで定義されます)。

identifier valuesについては、注釈をJPA @javax.persistence.Id注釈とともにJPA @javax.persistence.GeneratedValue注釈を使用してください。 simple propertiesについては、ネイティブなHibernate @org.hibernate.annotations.Generated注釈を使用してください(afaikにはJPA注釈には該当しません)。

生成された識別子の値がHibernateによってどのように取得されるかは、世代戦略および/またはデータベースの方言によって異なります。単純なプロパティの場合、HibernateはINSERTまたはUPDATEの後にid文で追加のSELECTを実行します。

関連する問題