オブジェクトの保存時にオブジェクトのプロパティを null に設定するために、Hibernate インターセプター (EmptyInterceptor を拡張) を実装し、onFlushDirtyメソッドを実装しました。コードは次のようになります。
public boolean onFlushDirty(...) {
// looking for the property index
int i = 0;
for (i=0; i<propertyNames.length; i++) {
if ("someProperty".equals(propertyNames[i])) {
break;
}
}
// setting it to null
currentState[i] = null;
残念ながら、オブジェクトを無効にしても、レコードはデータベースに保存されたままです。奇妙なことに、そのオブジェクトを変更すると、変更がデータベースに保存されます。
オブジェクトとプロパティの両方がエンティティです。