/*
* Hibernate, Relational Persistence for Idiomatic Java
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
package org.hibernate.envers.test.integration.components.dynamic;
import java.io.Serializable;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.hibernate.HibernateException;
import org.hibernate.engine.spi.SharedSessionContractImplementor;
import org.hibernate.type.IntegerType;
import org.hibernate.usertype.UserType;
public class AgeType implements UserType {
@Override
public int[] sqlTypes() {
return new int[] {
IntegerType.INSTANCE.sqlType()
};
}
@Override
public Class<Age> returnedClass() {
return Age.class;
}
@Override
public boolean equals(Object x, Object y) throws HibernateException {
return x != null ? x.equals( y ) : y == null;
}
@Override
public int hashCode(Object x) throws HibernateException {
return x != null ? x.hashCode() : 1;
}
@Override
public Object nullSafeGet(ResultSet rs, String[] names, SharedSessionContractImplementor session, Object owner)
throws HibernateException, SQLException {
return new Age( rs.getInt( rs.findColumn( names[0] ) ) );
}
@Override
public void nullSafeSet(PreparedStatement st, Object value, int index, SharedSessionContractImplementor session)
throws HibernateException, SQLException {
st.setInt( index, ( (Age) value ).getAgeInYears() );
}
@Override
public Object deepCopy(Object value) throws HibernateException {
return new Age( ( (Age) value ).getAgeInYears() );
}
@Override
public boolean isMutable() {
return false;
}
@Override
public Serializable disassemble(Object value) throws HibernateException {
return null;
}
@Override
public Object assemble(Serializable cached, Object owner) throws HibernateException {
return null;
}
@Override
public Object replace(Object original, Object target, Object owner) throws HibernateException {
return null;
}
}