我创建了Interceptor,并使用Hibernate EmptyInterceptor对其进行了扩展。保存对象时将调用 Override方法onSave()
,该对象尚未保存到数据库中,而onFlushDirty()
更新对象时将调用该方法,该对象尚未更新到数据库中。 在此功能中,我已通过其名称检查方法,其中必须在创建或更新时设置日期。 这是onFlushDirty()方法的示例代码。
public boolean onFlushDirty(Object entity,Serializable id,Object[] currentState,
Object[] prevIoUsState,String[] propertyNames, Type[] types)
{
if ( entity instanceof City ) {
for ( int i=0; i < propertyNames.length; i++ ) {
if ( "lastUpdatedOn".equals( propertyNames[i] ) ) {
currentState[i] = new Date();
return true;
}
}
}
return false;
}
这lastUpdatedOn
是我的方法名称,它设置了更新的记录日期。
onSave()方法:
public boolean onSave(Object entity, Serializable id, Object[] state,
String[] propertyNames, Type[] types)
{
if ( entity instanceof City) {
for ( int i=0; i<propertyNames.length; i++ ) {
if ( "createdOn".equals( propertyNames[i] ) ) {
state[i] = new Date();
return true;
}
}
}
return false;
}
这createdOn
是设置记录创建日期的方法。
使用此拦截器类扩展您的POJO类。