<id name="id" type="xxCompositeUserType">
<column name="c1"/>
<column name="c2" />
</id>
public class DoubleIntegerType implements CompositeUserType {
private static final int[] TYPES = { Types.INTEGER, Types.INTEGER };
public int[] sqlTypes() {
return TYPES;
}
public String[] getPropertyNames() {
return new String[] {"integer1", "integer2"};
}
public Type[] getPropertyTypes() {
return new Type[] {Hibernate.INTEGER, Hibernate.INTEGER};
}
public Object getPropertyValue(Object component, int property)
throws HibernateException {
return ((Integer[]) component)[property];
}
public void setPropertyValue(Object component, int property, Object value)
throws HibernateException {
( (Integer[]) component )[property] = (Integer) value;
}
public Class returnedClass() {
return Integer[].class;
}
public boolean equals(Object x, Object y) throws HibernateException {
if (x == y) {
return true;
}
if (x == null || y == null) {
return false;
}
Integer[] i1 = (Integer[]) x;
Integer[] i2 = (Integer[]) y;
return ( i1[0].equals(i2[0]) && i1[1].equals(i2[1]) );
}
public Object nullSafeGet(ResultSet rs, String[] names,
SessionImplementor session, Object owner) throws HibernateException,
SQLException {
Integer first = (Integer) Hibernate.INTEGER.nullSafeGet(rs, names[0]);
Integer second = (Integer) Hibernate.INTEGER.nullSafeGet(rs, names[1]);
return ( first==null && second==null ) ? null : new Integer[] { first, second };
}
public void nullSafeSet(PreparedStatement st, Object value, int index,
SessionImplementor session) throws HibernateException, SQLException {
Integer[] integers = (value==null) ? new Integer[2] : (Integer[]) value;
Hibernate.INTEGER.nullSafeSet(st, integers[0], index);
Hibernate.INTEGER.nullSafeSet(st, integers[1], index+1);
}
public Object deepCopy(Object value) throws HibernateException {
if ( value==null ) return null;
Integer[] result = new Integer[2];
Integer[] input = (Integer[]) value;
result[0] = input[0];
result[1] = input[1];
return result;
}
public boolean isMutable() {
return true;
}
public Serializable disassemble(Object value, SessionImplementor session)
throws HibernateException {
return (Serializable) deepCopy(value);
}
public Object assemble(Serializable cached, SessionImplementor session,
Object owner) throws HibernateException {
return deepCopy(cached);
}
}
分享到:
相关推荐
1. 实现`UserType`接口:这是最常见的自定义类型实现方式。`UserType`提供了对Java对象和数据库列之间转换的一系列方法,包括获取SQL类型的数组(`sqlTypes()`)、返回对象的Java类(`returnedClass()`)、比较两个...
1. **访问数据库操作接口** - **Session**:这是与数据库交互的主要接口,提供了对数据库的基本CRUD(Create, Read, Update, Delete)操作。虽然非线程安全,但它是轻量级的,每个客户端请求应对应一个Session实例...
也可以通过实现 org.hibernate.usertype.CompositeUserType 接口来自定义数据映射类型。 可扩展接口 1. org.hibernate.usertype.UserType:可以自定义数据映射类型。 2. org.hibernate.dialect.Dialect abstract_...
1. A功能:这是保存一个顶级菜单,没有与其他记录关联。在Hibernate中,可以直接通过`session.save(catalog)`来保存新的顶级菜单,因为它们不需要与其他记录建立关联。 2. B功能:这个功能用于根据父ID添加子分类,...
11.2.3 实现CompositeUserType接口 11.2.4 运行本节范例程序 11.3 操纵Blob和Clob类型数据 11.4 小结 11.5 思考题 第12章 映射继承关系 12.1 继承关系树的每个具体类对应一个表 12.1.1 创建映射文件 ...
11.2.3 实现CompositeUserType接口 11.2.4 运行本节范例程序 11.3 操纵Blob和Clob类型数据 11.4 小结 11.5 思考题 第12章 映射继承关系 12.1 继承关系树的每个具体类对应一个表 12.1.1 创建映射文件 ...
11.2.3 实现CompositeUserType接口 11.2.4 运行本节范例程序 11.3 操纵Blob和Clob类型数据 11.4 小结 11.5 思考题 第12章 映射继承关系 12.1 继承关系树的每个具体类对应一个表 12.1.1 创建映射文件 ...
11.2.3 实现CompositeUserType接口 11.2.4 运行本节范例程序 11.3 操纵Blob和Clob类型数据 11.4 小结 11.5 思考题 第12章 映射继承关系 12.1 继承关系树的每个具体类对应一个表 12.1.1 创建映射文件 ...
1. **定义Java类**:为自定义字段创建一个Java类,这个类将封装特定的数据结构。例如,如果我们有一个日期范围字段,可以创建一个`DateRange`类,包含两个`LocalDate`属性,分别代表起始和结束日期。 ```java ...
如果内置的映射类型无法满足需求,开发者可以通过实现 `net.sf.hibernate.UserType` 或 `net.sf.hibernate.CompositeUserType` 接口来自定义映射类型。自定义映射类型允许开发者将任何Java类映射到数据库的特定类型...
1. **核心API**:这是Hibernate的核心部分,包括`SessionFactory`、`Session`、`Transaction`等关键接口和类。`SessionFactory`是创建`Session`对象的工厂,`Session`负责实际的数据库操作,而`Transaction`则用于...
5.3.5 创建CompositeUserType 5.3.6 参数化定制类型 5.3.7 映射枚举 5.4 小结 第6章 映射集合和实体关联 6.1 值类型的set、bag、list和map 6.1.1 选择集合接口 6.1.2 映射set ...
#### 1. 教程 ##### 1.1 第一部分 - 第一个Hibernate应用程序 - **设置**: 安装必要的开发环境,包括Java SDK、IDE(如Eclipse或IntelliJ IDEA)、Hibernate库等。 - **第一节**: 简介Hibernate的基本概念,如...