PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment mapper PostgreSQL enum avec JPA et Hibernate

Je l'ai compris. J'avais besoin d'utiliser setObject au lieu de setString dans la fonction nullSafeSet et de transmettre Types.OTHER en tant que java.sql.type pour faire savoir à jdbc qu'il s'agissait d'un type postgres.

public void nullSafeSet(PreparedStatement st, Object value, int index) throws HibernateException, SQLException {
    if (value == null) {
        st.setNull(index, Types.VARCHAR);
    }
    else {
//            previously used setString, but this causes postgresql to bark about incompatible types.
//           now using setObject passing in the java type for the postgres enum object
//            st.setString(index,((Enum) value).name());
        st.setObject(index,((Enum) value), Types.OTHER);
    }
}