0

質問: [ref] が真の主キーであることを Hibernate で示す方法はありますが、レコードを更新するときに、[objectID] に .update または .saveOrUpdate を適用する必要があります。

コンテキスト: Web サービスからテーブルに情報を同期するシナリオがあります。オブジェクトをインポートすると、オブジェクトの一意の参照が保持されます。これにより、スクリプトを再度実行して、ローカルに保持されているオブジェクト情報を更新できます。

例: 3 つのフィールドで構成される単純なテーブル。

[ref] [objectID] [objectTitle]


[ref] = 主キー。新しいレコードの挿入で増加します。内部参照と関係の関連付けに使用されます。

[objectID] = オブジェクト自体の一意の識別子。

[objectTitle] = objectID に関連付けられた情報。これは更新時に変更される可能性があります。


Hibernate 内でこれを設定する方法について少し混乱しています。[ref] を @Id として設定する必要があるように思われるので、ジェネレーターを使用して自動インクリメントされます。問題は、[ref] ではなく [objectID] を使用して情報を更新することです。

4

2 に答える 2

0

まあ、それは非常に簡単です。

指定された objectID を持つエンティティをロードすることから始めます。

MyEntity m = 
    (MyEntity) session.createQuery("select m from MyEntity m where m.objectID = :objectID")
                      .setParameter("objectID", theObjectID)
                      .uniqueResult();

次に、Web サービスから取得した新しいタイトルでこのエンティティを更新します。

m.setObjectTitle(theObjectTitle);
于 2012-12-08T17:33:14.827 に答える
-1

これは、テーブルの「id」列を更新することは可能ですか。.hbmファイルの「id」は次のようになります。

<id name="id" type="int" column="id">
<generator class="increment"/>
</id>
于 2013-03-20T09:15:45.323 に答える