hibernate 自定义类型问题 我自定义了一个List类型的。。为什么能存取出的类的对象。。就那个字段是NULL..请高手解决一下 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 package hibernatetest;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.Hibernate;import org.hibernate.HibernateException;import org.hibernate.SessionFactory;import org.hibernate.usertype.UserType;public class EmailList implements UserType { private static final String SPLITTER=";"; private static final int[] TYPES=new int[]{Types.VARCHAR}; public Object assemble(Serializable arg0, Object arg1) throws HibernateException { // TODO Auto-generated method stub return null; } /** * 创建一个新的List类,包含原有List实例中的所有元素 */ public Object deepCopy(Object arg0) throws HibernateException { // TODO Auto-generated method stub List sourceList = (List)arg0; List targetList = new ArrayList(); if(sourceList!=null) { targetList.addAll(sourceList); return targetList; }else{ return null; } } public Serializable disassemble(Object arg0) throws HibernateException { // TODO Auto-generated method stub return null; } /** * 判断emailList是否发生改变 */ public boolean equals(Object x, Object y) throws HibernateException { // TODO Auto-generated method stub if(x==y) { return true; } if(x!=null&&y!=null) { List xList=(List)x; List yList=(List)y; if(xList.size()!=yList.size()) { return false; } for(int i=0;i<xList.size();i++) { String str1=(String)xList.get(i); String str2=(String)yList.get(i); if(!str1.equals(str2)) { return false; } } return true; } return false; } public int hashCode(Object arg0) throws HibernateException { // TODO Auto-generated method stub return 0; } public boolean isMutable() { // TODO Auto-generated method stub return false; } /** * 从resultSet中取出email字段,并将其解析为List类后返回 * @param rs * @param names * @param owner * @return Object * @throws HibernateException * @throws SQLException */ public Object nullSafeGet(ResultSet arg0, String[] arg1, Object arg2) throws HibernateException, SQLException { // TODO Auto-generated method stub String value = (String)Hibernate.STRING.nullSafeGet(arg0, arg1[0]); if (value != null ) { return parses(value); } else { return null ; } } /** * 将以";"分隔的字符串解析为一个字符串数组 * @param value * @return List */ private List parses(String value) { String strs[]=value.split(SPLITTER); List emailList=new ArrayList(); int size=strs.length; for(int i=0;i<size;i++) { emailList.add(strs[i]); } // TODO Auto-generated method stub return emailList; } /** * 将List型的email信息组装字符串之后保存到email字段 */ public void nullSafeSet(PreparedStatement arg0, Object arg1, int arg2) throws HibernateException, SQLException { // TODO Auto-generated method stub if (arg1 != null ) { String str = assemble((List)arg1); Hibernate.STRING.nullSafeSet(arg0, str, arg2); } else { Hibernate.STRING.nullSafeSet(arg0, arg1, arg2); } } public Object replace(Object arg0, Object arg1, Object arg2) throws HibernateException { // TODO Auto-generated method stub return null; } public Class returnedClass() { // TODO Auto-generated method stub return List.class; } public int[] sqlTypes() { // TODO Auto-generated method stub return TYPES; } /** * 将String拼装成一个字符串,以";"分隔 * @param emailList * @return String */ private String assemble(List emailList) { // TODO Auto-generated method stub StringBuffer strBuf = new StringBuffer(); for ( int i = 0 ; i < emailList.size() - 1 ; i ++ ) { strBuf.append((String)emailList.get(i)).append(SPLITTER); } strBuf.append(emailList.get(emailList.size() - 1 )); return strBuf.toString(); } }看看是不是哪里写的不对 oracle 时间排序问题 静态模块加载文件出错 求助一个lucene的搜索方法 str="18/09/2008"如何转为2008-09-18? webservice的问题,查了很多资料不知道怎么做。 您觉得世界上最伟大的程序员,JAVA程序员是谁? 问一个JDBC的问题 weblogic 6.1 和 7.0区别大吗? 请教我怎样将jbuilder7的server指向我下载安装的jboss+Tomcat????急 如何将JSP页面中已经得到的数据进行筛选 好郁闷,第一个servlet程序就出错了,大家帮忙看下呀 String解析
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.Hibernate;
import org.hibernate.HibernateException;
import org.hibernate.SessionFactory;
import org.hibernate.usertype.UserType;
public class EmailList implements UserType {
private static final String SPLITTER=";";
private static final int[] TYPES=new int[]{Types.VARCHAR};
public Object assemble(Serializable arg0, Object arg1)
throws HibernateException {
// TODO Auto-generated method stub
return null;
} /**
* 创建一个新的List类,包含原有List实例中的所有元素
*/
public Object deepCopy(Object arg0) throws HibernateException {
// TODO Auto-generated method stub
List sourceList = (List)arg0;
List targetList = new ArrayList();
if(sourceList!=null)
{
targetList.addAll(sourceList);
return targetList;
}else{
return null;
} } public Serializable disassemble(Object arg0) throws HibernateException {
// TODO Auto-generated method stub
return null;
}
/**
* 判断emailList是否发生改变
*/
public boolean equals(Object x, Object y) throws HibernateException {
// TODO Auto-generated method stub
if(x==y)
{
return true;
}
if(x!=null&&y!=null)
{
List xList=(List)x;
List yList=(List)y;
if(xList.size()!=yList.size())
{
return false;
}
for(int i=0;i<xList.size();i++)
{
String str1=(String)xList.get(i);
String str2=(String)yList.get(i);
if(!str1.equals(str2))
{
return false;
}
}
return true;
}
return false;
} public int hashCode(Object arg0) throws HibernateException {
// TODO Auto-generated method stub
return 0;
} public boolean isMutable() {
// TODO Auto-generated method stub
return false;
}
/**
* 从resultSet中取出email字段,并将其解析为List类后返回
* @param rs
* @param names
* @param owner
* @return Object
* @throws HibernateException
* @throws SQLException
*/
public Object nullSafeGet(ResultSet arg0, String[] arg1, Object arg2)
throws HibernateException, SQLException {
// TODO Auto-generated method stub
String value = (String)Hibernate.STRING.nullSafeGet(arg0, arg1[0]);
if (value != null ) {
return parses(value);
} else {
return null ;
}
}
/**
* 将以";"分隔的字符串解析为一个字符串数组
* @param value
* @return List
*/
private List parses(String value) {
String strs[]=value.split(SPLITTER);
List emailList=new ArrayList();
int size=strs.length;
for(int i=0;i<size;i++)
{
emailList.add(strs[i]);
}
// TODO Auto-generated method stub
return emailList;
}
/**
* 将List型的email信息组装字符串之后保存到email字段
*/
public void nullSafeSet(PreparedStatement arg0, Object arg1, int arg2)
throws HibernateException, SQLException {
// TODO Auto-generated method stub
if (arg1 != null ) {
String str = assemble((List)arg1);
Hibernate.STRING.nullSafeSet(arg0, str, arg2);
} else {
Hibernate.STRING.nullSafeSet(arg0, arg1, arg2);
} } public Object replace(Object arg0, Object arg1, Object arg2)
throws HibernateException {
// TODO Auto-generated method stub
return null;
} public Class returnedClass() {
// TODO Auto-generated method stub
return List.class;
} public int[] sqlTypes() {
// TODO Auto-generated method stub
return TYPES;
}
/**
* 将String拼装成一个字符串,以";"分隔
* @param emailList
* @return String
*/
private String assemble(List emailList) {
// TODO Auto-generated method stub
StringBuffer strBuf = new StringBuffer();
for ( int i = 0 ; i < emailList.size() - 1 ; i ++ ) {
strBuf.append((String)emailList.get(i)).append(SPLITTER);
}
strBuf.append(emailList.get(emailList.size() - 1 ));
return strBuf.toString();
}
}看看是不是哪里写的不对