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

Génération de code de type forcé JOOQ

Le <name/> élément de votre <customType/> doit se référer au <U> type (type d'utilisateur) de votre Converter<T, U> , pas au <T> type (type de base de données). Donc, si vous écrivez ceci :

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

Ensuite, vous êtes vraiment en train d'enregistrer un Converter<Timestamp, Timestamp> . Essayez ceci à la place :

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

Notez que votre convertisseur doit également gérer correctement null valeurs :

@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());
}