2017-12-20 5 views
0

BeanListHandlerを使用して、データベースからPOJOに行を変換しています。それは正常に動作していますが、今私はいくつかの日付比較を行う必要があります。このために私はJodaTimeを使うことに決めました。Java - DBUtils BeanListHandlerを使用して、問合せのすべての日付をJodaTimeのDateTimeに変換します。

クエリの結果セットのすべてのタイムスタンプ/日付型の行を、デフォルトのTimestampではなく、JodaTimeのDateTimeクラスに変換する必要があります。私はこれを行うにはセッターを使ってみましたが、BeanListHandlerはセッターに値を設定するよう呼びかけていないようです(反射を使用していますか?)。

どうすればいいですか?

+0

外部ライブラリをプロジェクトに導入する場合、[ThreeTen Backport](http://www.threeten.org/threetenbp/)はなぜですか?これは、最新のJavaの日付と時刻のAPIである 'java.time'を提供します。 Joda-Timeのホームページからの引用:「ユーザーは今すぐ 'java.time'(JSR-310)に移行するように求められています。」Joda-Timeは主に「完成」プロジェクトとみなされています。大幅な拡張は計画されていません。 Java SE 8を使用している場合は、 'java.time'(JSR-310)に移行してください。" Java 6または7を使用していても、今日はそのステップを実行できます。 –

答えて

0

私はストレートな解決策はないと思います。 1つの回避策は、TimestampDateTimeフィールドをPOJOに設定し、Timestamp属性の設定メソッドでDateTimeの値を下の例のように設定することです。

public class Pojo{ 
    private Timestamp timestamp; 
    private DateTime dateTime; 

    public Timestamp getTimestamp() { 
     if (timestamp == null && dateTime != null) { 
      this.timestamp = new Timestamp(dateTime.getMillis()); 
     } 
     return timestamp; 
    } 

    public void setTimestamp(Timestamp timestamp) { 
     if (dateTime == null && timestamp != null) { 
      this.dateTime = new DateTime(timestamp.getTime()); 
     } 
     this.timestamp = timestamp; 
    } 

    public DateTime getDateTime() { 
     if (dateTime == null && timestamp != null) { 
      this.dateTime = new DateTime(timestamp.getTime()); 
     } 
     return dateTime; 
    } 

    public void setDateTime(DateTime dateTime) { 
     if (timestamp == null && dateTime != null) { 
      this.timestamp = new Timestamp(dateTime.getMillis()); 
     } 
     this.dateTime = dateTime; 
    } 



} 
関連する問題