public class FizzywigType2 implements org.hibernate.usertype.UserType { public static final String KEYS = new String[] { Fizzywig.class.getName() }; public static final FizzywigType1 INSTANCE = new FizzywigType1(); @Override public int[] sqlTypes(Mapping mapping) { return new int[] { java.sql.Types.VARCHAR }; } @Override public Class getReturnedClass() { return Fizzywig.class; } @Override public Object nullSafeGet( ResultSet rs, String[] names, SessionImplementor session, Object owner) throws SQLException { return Fizzwig.fromString( StringType.INSTANCE.get( rs, names[0], sesson ) ); } @Override public void nullSafeSet( PreparedStatement st, Object value, int index, SessionImplementor session) throws SQLException { final String dbValue = value == null ? null : ( (Fizzywig) value ).asString(); StringType.INSTANCE.nullSafeSet( st, value, index, session ); } ... }