JDBCによる新しいDate&Date APIサポートは、 JEP 170:JDBC4.2 によって定義されています。 。 Postgres ダウンロードページ JDBC 4.2の新機能との互換性は、Postgresバージョン9.4以降でのみ開始されるため、古いドライバーで新しいAPIを使用すると互換性の問題が発生します。
setObject(1, new java.util.Date());
でも LocalDate
のような新しいAPIだけでなく、Postgresの同じ制約(MySQLによって喜んで受け入れられます)によって拒否されます 。一部の動作は実装に依存するため、java.sql.*
のみ ほぼ保証されています(大まかに言えば)。
Spring JDBCフレームワークに関しては、その動作をオーバーライドすることで、後で後悔することなく回避できると思います。私はあなたがすでにしたことに対して少し異なるアプローチを提案します:
-
BeanPropertySqlParameterSource
を拡張します 新しい日付と時刻のAPI、および必要に応じて入力されたパラメーターに関連付けられた他のクラスを操作するための動作(私はそのSpring APIに精通していません)。 - すでにオーバーライドされている
BeanPropertyRowMapper
の動作を抽出します 操作をフェッチするために別のクラスに移動します。 - ファクトリパターンまたはユーティリティクラスですべてをまとめて、もう一度確認する必要がないようにします。
このようにして、APIがサポートされた場合に将来のリファクタリング機能を強化し、開発中に必要なコードの量を削減します。
DAO もご覧ください。 アプローチします。