PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Geração de código de tipo forçado JOOQ


O <name/> elemento do seu <customType/> deve consultar o <U> tipo (tipo de usuário) do seu Converter<T, U> , não para o <T> tipo (tipo de banco de dados). Então, se você escrever isso:
<customTypes>
  <customType>
   <name>java.sql.Timestamp</name>
   <converter>com.plannow.jooq.converters.DateTimeConverter</converter>
  </customType>         
</customTypes>

Então você está apenas registrando um Converter<Timestamp, Timestamp> . Tente isso em vez disso:
<customTypes>
  <customType>
   <name>org.joda.time.DateTime</name>
   <converter>com.plannow.jooq.converters.DateTimeConverter</converter>
  </customType>         
</customTypes>

Observe que seu conversor também deve manipular corretamente 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());
}