7

データベースでは、私の列はTIMESTAMP型であるため、クラスには次のようなDatetime型のプロパティがあります。

public void setDiscoveryDate(final DateTime discoveryDtTm) {
        this.discoveryDtTm = discoveryDtTm;
    }

今JdbcTemplateでそれを取得したいので、次のようなコードがあります。

variant.setDiscoveryDate(rs.getTimestamp("discovery_dt_tm"));

結果セットのget列がDateTimeを返すものを見つけることができなかったため、これは機能しません。getDateまたはgetTimeのいずれかしか表示されませんでした。

4

2 に答える 2

15

これDateTimeは、が標準のJavaタイプではないためです。JodaTimeタイプを参照している場合は、次のことを試してください。

variant.setDiscoveryDate(
   new DateTime(rs.getTimestamp("discovery_dt_tm").getTime())
);

rs.getTimestampが返された場合、これは壊れますnull。したがって、これをより小さなステートメントに分割し、のチェックを追加することをお勧めしますnull

DateTimeのコンストラクターは次のサブクラスであるを取得するためjava.util.Date、これを簡単に行うことができることに注意してください。Timestamp

variant.setDiscoveryDate(
   new DateTime(rs.getTimestamp("discovery_dt_tm"))
);

Timestampしかし、クラスの設計が悪いため、これも間違っています(説明についてはjavadocを参照してください)。

最初の例に固執する(with getTime()

于 2011-08-10T20:24:55.350 に答える
1

試してみてください:

variant.setDiscoveryDate(new DateTime(rs.getTimestamp("discovery_dt_tm").getTime()));
于 2011-08-10T20:24:55.227 に答える