我实现了一个 Hibernate 拦截器(扩展 EmptyInterceptor)并实现了onFlushDirty方法,以便在保存该对象时将对象的属性设置为 null。代码如下所示:
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;
不幸的是,即使我取消了对象,记录仍然保存到数据库中。奇怪的是,当我修改该对象时,更改将保存到数据库中。
对象和属性都是实体。