@Override public Comparator getComparator() { return (Comparator) getUserType(); }
@Override public boolean equals(Object obj) { return ( obj instanceof CustomType ) && getUserType().equals( ( (CustomType) obj ).getUserType() ); } }
@Override public boolean canDoSetting() { if ( ProcedureParameterNamedBinder.class.isInstance( getUserType() ) ) { return ((ProcedureParameterNamedBinder) getUserType() ).canDoSetting(); } return false; }
@Override public boolean canDoExtraction() { if ( ProcedureParameterExtractionAware.class.isInstance( getUserType() ) ) { return ((ProcedureParameterExtractionAware) getUserType() ).canDoExtraction(); } return false; }
@Override public void nullSafeSet( PreparedStatement st, Object value, int index, SharedSessionContractImplementor session) throws SQLException { getUserType().nullSafeSet( st, value, index, session ); }
@Override public void nullSafeSet( CallableStatement statement, Object value, String name, SharedSessionContractImplementor session) throws SQLException { if ( canDoSetting() ) { ((ProcedureParameterNamedBinder) getUserType() ).nullSafeSet( statement, value, name, session ); } else { throw new UnsupportedOperationException( "Type [" + getUserType() + "] does support parameter binding by name" ); } }
@Override public Object replace( Object original, Object target, SharedSessionContractImplementor session, Object owner, Map copyCache) throws HibernateException { return getUserType().replace( original, target, owner ); }
@Override public void nullSafeSet( PreparedStatement st, Object value, int index, boolean[] settable, SharedSessionContractImplementor session) throws SQLException { if ( settable[0] ) { getUserType().nullSafeSet( st, value, index, session ); } }
@Override public Object extract(CallableStatement statement, int startIndex, SharedSessionContractImplementor session) throws SQLException { if ( canDoExtraction() ) { return ((ProcedureParameterExtractionAware) getUserType() ).extract( statement, startIndex, session ); } else { throw new UnsupportedOperationException( "Type [" + getUserType() + "] does support parameter value extraction" ); } }
@Override public Object extract(CallableStatement statement, String[] paramNames, SharedSessionContractImplementor session) throws SQLException { if ( canDoExtraction() ) { return ((ProcedureParameterExtractionAware) getUserType() ).extract( statement, paramNames, session ); } else { throw new UnsupportedOperationException( "Type [" + getUserType() + "] does support parameter value extraction" ); } }
@Override public Class getReturnedClass() { return getUserType().returnedClass(); }
@Override public String objectToSQLString(Object value, Dialect dialect) throws Exception { return ( (EnhancedUserType) getUserType() ).objectToSQLString( value); }
@Override public boolean isEqual(Object x, Object y) throws HibernateException { return getUserType().equals( x, y ); }
@Override public int getHashCode(Object x) { return getUserType().hashCode( x); }
@Override public Object assemble(Serializable cached, SharedSessionContractImplementor session, Object owner) { return getUserType().assemble( cached, owner); }
@Override public Serializable disassemble(Object value, SharedSessionContractImplementor session, Object owner) { return getUserType().disassemble( value); }
@Override public Object seed(SharedSessionContractImplementor session) { return ( (UserVersionType) getUserType() ).seed( session ); }
@Override public Object deepCopy(Object value, SessionFactoryImplementor factory) throws HibernateException { return getUserType().deepCopy( value); }
@Override public Object nullSafeGet( ResultSet rs, String columnName, SharedSessionContractImplementor session, Object owner) throws SQLException { return nullSafeGet(rs, new String[] { columnName }, session, owner); }
private void validateEnumMapping(Property property, EnumType expectedJpaEnumType) { assertThat( property.getType(), instanceOf( CustomType.class ) ); final CustomType customType = (CustomType) property.getType(); assertThat( customType.getUserType(), instanceOf( org.hibernate.type.EnumType.class ) ); final org.hibernate.type.EnumType hibernateMappingEnumType = (org.hibernate.type.EnumType) customType.getUserType(); assertThat( hibernateMappingEnumType.isOrdinal(), is(expectedJpaEnumType==EnumType.ORDINAL) ); assertThat( hibernateMappingEnumType.sqlTypes().length, is(1) ); assertThat( hibernateMappingEnumType.sqlTypes()[0], is(expectedJpaEnumType==EnumType.ORDINAL? Types.INTEGER:Types.VARCHAR) ); }