私はこの答えを見回しましたが、私の質問に答えたものは見つかりませんでした。Hibernate merge where節
私は、Hibernateを使用するアプリケーションで作業しており、session.merge(object)
を使用してオブジェクトの更新または挿入を行います。挿入は正常に機能しますが、(A、B)と同じ値を持つ複数のレコードが存在する場合、データベースフィールド(A、B、C)のユニーク制約のために更新が失敗します。 Hibernateモデルはidとして定義されたフィールド(A、B)しか持たず、(A、B、C)を持たない。なぜなら、レコードを選択または更新するとき、Cのヌル値を持つレコードのみが返されたいからである終了日はnullがアクティブで非nullはアクティブでないことを意味します)。選択を行う際に挿入されます
<class name="..." table="..." lazy="true" batch-size="10" where="C is null">
が、MERGE文、UPDATE文を実行する:Hibernateのモデルファイル(Table.hbm.xml)で
、次のように句が定義された場所を持っていますこれはwhere句の一部としてはありません。生成された更新があるようなもの:細かいですが、私が希望することがあるようにもHibernateのモデルファイル(C is null
節)からwhere句を持つようにwhere句に追加される
update table
set ...
where A=?
and B=?
selectステートメントの場合
私は更新ステートメントに追加するために何ができるか知っていますか?
ありがとうございました。