0

私はやっていますsaveOrUpdateが、私が直面している問題は、すでにテーブルにある古いデータを上書きしていることです。

キーとしてcorrelationIDがあるテーブルがあり、そのIDに対して最初にデータを永続化し、次に同じIDに対して同じテーブルの別の列に確認メッセージを渡します。しかし、これはテーブルにある古いデータを上書きし、IDとメッセージを含む空のテーブルが得られ、他の列は無効になります。

Hibernate マッピング ファイル (.hbm.xml) を使用しています

古いデータを保持し、1 つの列のみを更新する方法についての提案はありますか?

アップデート:

永続化インスタンスをロードしようとすると、次のようになります。

SEVERE: IllegalArgumentException in class: common.entity.AbstractDetailsKey, getter method of property: correlationId
...
org.hibernate.PropertyAccessException: IllegalArgumentException occurred calling getter of common.entity.AbstractDetailsKey.correlationId
...
Caused by: java.lang.IllegalArgumentException: 666
4

1 に答える 1

3

更新して保存する前に、最初にエンティティをロードしていますか? それとも、エンティティ インスタンスを作成し、そこに必要な ID を指定して、空のインスタンスの 1 つのプロパティを変更しているだけですか? ID X のエンティティには値を持つプロパティが 1 つしかないことを ORM に伝えたので、それは悪いことです。もちろん、他のすべての列の値を無効にします。

どちらかが必要なようですね

1) 行をロードし、変更を加えてから、saveOrUpdate
2) hql を使用して 1 つの列だけを更新します。

于 2012-08-02T20:13:01.870 に答える