⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 questionusertype.java

📁 近几年来
💻 JAVA
字号:
package tarena.util;

import java.io.Serializable;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;
import java.util.ArrayList;
import java.util.List;

import org.hibernate.*;
import org.hibernate.usertype.UserType;

public class QuestionUserType implements UserType, java.io.Serializable {

	public Object replace(Object arg0, Object arg1, Object arg2) throws HibernateException {
		return null;
	}

	// 返回所映射字段的SQL类型(java.sql.Types)
	public int[] sqlTypes() {
		return new int[] { Types.VARCHAR };
	}

	// 所返回的自定义数据类型
	public Class returnedClass() {
		return List.class;
	}

	/**
	 * 自定义数据类型的比对方法 此方法将用作脏数据检查,参数arg0,arg1分别为数据的两个副本 如果equals方法返回false,
	 * 则Hibernate将认为数据发生变化,并将变化更新到库表中
	 */
	public boolean equals(Object arg0, Object arg1) throws HibernateException {
		if (arg0 == arg1)
			return true;
		if (arg0 != null && arg1 != null) {
			List list1 = (List) arg0;
			List list2 = (List) arg1;
			if (list1.size() != list2.size())
				return false;
			for (int i = 0; i < list1.size(); i++) {
				String str1 = (String) list1.get(i);
				String str2 = (String) list2.get(i);
				if (!str1.equals(str2))
					return false;
			}
			return true;
		}
		return false;
	}

	/**
	 * 从ResultSet中读取数据,将其转换为自定义类型返回
	 */
	public Object nullSafeGet(ResultSet arg0, String[] arg1, Object arg2)
			throws HibernateException, SQLException {
		String str = (String) Hibernate.STRING.nullSafeGet(arg0, arg1[0]);
		if (str == null || str.trim().length()<1)
			return null;
		else {
			List result = new ArrayList();
			String[] sa = str.split(ContextUtil.DILIM);
			for (int i = 0; i < sa.length; i++) {
				result.add(sa[i]);
			}
			return result;
		}
	}

	/*
	 * 在Hibernate进行数据保存时调用 将自定义数据写入对应的库表字段
	 */
	public void nullSafeSet(PreparedStatement arg0, Object arg1, int arg2)
			throws HibernateException, SQLException {
		if (arg1 == null)
			Hibernate.STRING.nullSafeSet(arg0, null, arg2);
		else {
			List l = (List) arg1;
			if (l.size() < 1)
				Hibernate.STRING.nullSafeSet(arg0, null, arg2);
			else {
				StringBuffer str = new StringBuffer();
				for (int i = 0; i < l.size() - 1; i++) {
					str.append(l.get(i).toString() + ContextUtil.DILIM);
				}
				str.append(l.get(l.size() - 1));
				Hibernate.STRING.nullSafeSet(arg0, str.toString(), arg2);
			}
		}
	}

	/**
	 * 完全复制对象,原始版本用作脏数据检查,将完全拷贝返回给用户使用
	 */
	public Object deepCopy(Object arg0) throws HibernateException {
		List source = (List) arg0;
		List target = new ArrayList();
		if(source!=null)
			target.addAll(source);
		return target;
	}

	/*
	 * 本类型实例是否可变
	 */
	public boolean isMutable() {
		return false;
	}

	public Object assemble(Serializable arg0, Object arg1) throws HibernateException {
		// TODO Auto-generated method stub
		return null;
	}

	public Serializable disassemble(Object arg0) throws HibernateException {
		// TODO Auto-generated method stub
		return null;
	}

	public int hashCode(Object arg0) throws HibernateException {
		// TODO Auto-generated method stub
		return 0;
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -