Il nuovo supporto dell'API Date &Date con JDBC è definito da JEP 170:JDBC 4.2 . Postgres pagina di download la compatibilità con le nuove funzionalità di JDBC 4.2 inizia solo a partire dalla versione 9.4 di Postgres, quindi verranno visualizzati alcuni problemi di compatibilità utilizzando la nuova API con i driver precedenti.
Anche setObject(1, new java.util.Date());
viene rifiutato dallo stesso vincolo in Postgres (che è felicemente accettato da MySQL), non solo la nuova API come LocalDate
. Alcuni comportamenti dipenderanno dall'implementazione, quindi solo java.sql.*
è praticamente garantito (in parole povere).
Per quanto riguarda il framework Spring JDBC, penso che sovrascriverne il comportamento funzioni per aggirarlo senza pentirsene in seguito. Suggerisco un approccio leggermente diverso per quello che hai già fatto:
- Estendi
BeanPropertySqlParameterSource
comportamento per lavorare con la nuova API di data e ora e altre classi associate all'input dei parametri, se necessario (non ho familiarità con quell'API Spring). - Estrai il comportamento già sovrascritto di
BeanPropertyRowMapper
a un'altra classe per le operazioni di recupero. - Concludi il tutto con un modello di fabbrica o una classe di utilità in modo da non doverlo rivedere di nuovo.
In questo modo migliori le capacità di refactoring future se l'API viene supportata e riduci la quantità di codice necessaria durante lo sviluppo.
Potresti anche guardare alcuni DAO si avvicina.