sql >> Base de Datos >  >> RDS >> PostgreSQL

Generación de código de tipo forzado JOOQ

El <name/> elemento de su <customType/> debe hacer referencia al <U> type (tipo de usuario) de su Converter<T, U> , no al <T> tipo (tipo de base de datos). Así que si escribes esto:

<customTypes>
  <customType>
   <name>java.sql.Timestamp</name>
   <converter>com.plannow.jooq.converters.DateTimeConverter</converter>
  </customType>         
</customTypes>

Entonces realmente solo estás registrando un Converter<Timestamp, Timestamp> . Prueba esto en su lugar:

<customTypes>
  <customType>
   <name>org.joda.time.DateTime</name>
   <converter>com.plannow.jooq.converters.DateTimeConverter</converter>
  </customType>         
</customTypes>

Tenga en cuenta que su convertidor también debe manejar correctamente null valores:

@Override
public DateTime from(Timestamp t)     {
    return t == null ? null : new DateTime(t);
}

@Override
public Timestamp to(DateTime u) {
    return u == null ? null : new Timestamp(u.getMillis());
}