我举了一个例子,如下:
* UserType.nullSafeGet()所返回的自定义数据类型
*/
public Class returnedClass() {
return List.class;
}
/**
* 返回UserType所映射字段的SQL类型(java.sql.Types) 返回类型为int[],其中包含了映射个字段的SQL类型代码
* (UserType可以映射到一个或者多个字段)
*/
public int[] sqlTypes() {
return TYPES;
}
/**
* 自定义数据类型的比对方法 此方法将用作脏数据检查,参数x、y分别为数据的两个副本
* 如果equals方法返回false,则Hibernate将认为数据发生变化,并将变化更新到数据库表中
*/
public boolean equals(Object x, Object y) throws HibernateException {
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;
}