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的构造函数采用 a java.util.Date,它Timestamp是以下的子类:

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

但这也是错误的,因为Timestamp类的设计不好(参见javadoc的解释)。

坚持第一个例子(用getTime()

于 2011-08-10T20:24:55.350 回答
1

尝试:

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