您的位置:首页 > 其它

hibernate在crud时拦截

2016-04-22 16:25 148 查看
步骤一、

hibernate.xml配置

<bean id="sessionFactory" class="net.***.modules.core.hibernate.SessionFactoryBean"

p:excludeFilter="${hibernate.sessionFactory.excludeFilter:}">

<property name="dataSource" ref="dataSource" />

<property name="packagesToScan" value="net/**/weike/domain/*.class"/>

<property name="entityInterceptor">

<bean class="net.**.modules.core.hibernate.EntityModifyInfoInterceptor"/>

</property>

</bean>

步骤二、

package net.***.modules.core.hibernate;

import java.io.Serializable;

import java.util.Date;

import org.hibernate.EmptyInterceptor;

import org.hibernate.type.Type;

import net.***.modules.core.BaseEntity;

import net.**.modules.util.DateUtils;

public class EntityModifyInfoInterceptor extends EmptyInterceptor {

private static final long serialVersionUID = 1723940678969733167L;

@SuppressWarnings("rawtypes")

@Override

public boolean onSave(Object entity, Serializable id, Object[] state, String[] propertyNames,

Type[] types) {

if (BaseEntity.class.isInstance(entity)) {

BaseEntity abstractEntity = (BaseEntity) entity;

boolean modified = false;

for (int i = 0; i < propertyNames.length; i++) {

if ("createdTime".equals(propertyNames[i])) {

Date createdTime = DateUtils.getDefaultDate();

state[i] = createdTime;

abstractEntity.setCreatedTime(createdTime);

modified = true;

}

if ("lastModifiedTime".equals(propertyNames[i])) {

Date lastModifiedTime = DateUtils.getDefaultDate();

state[i] = lastModifiedTime;

abstractEntity.setLastModifiedTime(lastModifiedTime);

modified = true;

}

}

return modified;

} else {

return super.onSave(entity, id, state, propertyNames, types);

}

}

@SuppressWarnings("rawtypes")

@Override

public boolean onFlushDirty(Object entity, Serializable id, Object[] currentState,

Object[] previousState, String[] propertyNames, Type[] types) {

if (BaseEntity.class.isInstance(entity)) {

BaseEntity abstractEntity = (BaseEntity) entity;

boolean modified = false;

for (int i = 0; i < propertyNames.length; i++) {

if ("lastModifiedTime".equals(propertyNames[i])) {

Date lastModifiedTime = new Date(System.currentTimeMillis());

currentState[i] = lastModifiedTime;

abstractEntity.setLastModifiedTime(lastModifiedTime);

modified = true;

}

}

return modified;

} else {

return super

.onFlushDirty(entity, id, currentState, previousState, propertyNames, types);

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: