`
anyeeye
  • 浏览: 144058 次
  • 来自: ...
社区版块
存档分类
最新评论

CompositeUserType_1

阅读更多
<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);  
    }  
}  
分享到:
评论

相关推荐

    精通 Hibernate:Java 对象持久化技术详解(第2版).part1.rar

     11.2.3 实现CompositeUserType接口  11.2.4 运行本节范例程序  11.3 操纵Blob和Clob类型数据  11.4 小结  11.5 思考题 第12章 映射继承关系  12.1 继承关系树的每个具体类对应一个表  12.1.1 创建映射文件 ...

    java Hibernate 一对多自身关联问题

    formBean在提交表单的时候,域中数据库在下一次中仍然保留引起的,struts formBean 默认的scope为session,手动设置为request,就好了

    精通 Hibernate:Java 对象持久化技术详解(第2版).part4

     11.2.3 实现CompositeUserType接口  11.2.4 运行本节范例程序  11.3 操纵Blob和Clob类型数据  11.4 小结  11.5 思考题 第12章 映射继承关系  12.1 继承关系树的每个具体类对应一个表  12.1.1 创建映射文件 ...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     11.2.3 实现CompositeUserType接口  11.2.4 运行本节范例程序  11.3 操纵Blob和Clob类型数据  11.4 小结  11.5 思考题 第12章 映射继承关系  12.1 继承关系树的每个具体类对应一个表  12.1.1 创建映射文件 ...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part3

     11.2.3 实现CompositeUserType接口  11.2.4 运行本节范例程序  11.3 操纵Blob和Clob类型数据  11.4 小结  11.5 思考题 第12章 映射继承关系  12.1 继承关系树的每个具体类对应一个表  12.1.1 创建映射文件 ...

    Hibernate实战(第2版 中文高清版)

     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   ...

    hibernate3.6 文档(pdf 格式)

    1. Tutorial ........................................................................................................................ 1 1.1. Part 1 - The first Hibernate Application ......................

Global site tag (gtag.js) - Google Analytics