package com.jspxcms.common.orm; import java.io.Serializable; import org.hibernate.EmptyInterceptor; import org.hibernate.type.Type; /** * 把空字符串转换成null,使程序在判断上更为方便。 * 另外由于oracle的varchar2会自动把空字符串转换成null,所以加上这个转换可以让使数据库行为更统一。 * * @author liufang * */ public class EmptyToNullInterceptor extends EmptyInterceptor { private static final long serialVersionUID = 1L; @Override public boolean onSave(Object entity, Serializable id, Object[] state, String[] propertyNames, Type[] types) { // 空字符串转换成null boolean modified = false; for (int i = 0, len = state.length; i < len; i++) { if (state[i] instanceof String) { if ("".equals(state[i])) { state[i] = null; modified = true; } } } return modified; } @Override public boolean onFlushDirty(Object entity, Serializable id, Object[] currentState, Object[] previousState, String[] propertyNames, Type[] types) { // 空字符串转换成null boolean modified = false; for (int i = 0, len = currentState.length; i < len; i++) { if (currentState[i] instanceof String) { if ("".equals(currentState[i])) { currentState[i] = null; modified = true; } } } return modified; } }