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);
}
}
}
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);
}
}
}
相关文章推荐
- -std=c++11
- 朴素贝叶斯算法Python实现
- windows下Python图形化工具Matplotlib安装
- 一篇关于arc下内存管理的老文章,包括各种冷门修饰符(关于内存),写的较好,mark
- Android蓝牙初级一
- easyUI
- 基因数据处理20之BWASW算法ref分块建立索引然后比对
- 五、2440裸机开发 nand flash 操作
- mfc 内存dc
- 回收键盘
- python中的setdefaultencoding函数使用
- cocos环境下AndroidStudio安装以及编译APK文件
- css常见解决方案
- 算法Sedgewick第四版-第1章基础-2.1Elementary Sortss-004希尔排序法(Shell Sort)
- mysql常用命令
- C# JSON字符串序列化与反序列化
- openstack中的setup.py和setup.cfg的理解
- JNI DETECTED ERROR IN APPLICATION解决记录
- 精通Groovy_A 介绍, 与Java对比, 入门, 没有类型
- ng2-bootstrap——Native Angular2 directives for Bootstrap