从JdbcTemplate中的ResultSet获取DateTime

在数据库中我的列是TIMESTAMP类型,所以我的类具有类型为Datetime的属性,如下所示:

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

现在在JdbcTemplate中我想得到它,所以有些代码如下:

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

哪个不起作用,因为列为结果集的get我找不到返回DateTime的东西,我只看到了getDate或getTime。

那是因为DateTime不是标准的Java类型。 如果你指的是JodaTime类型,那么试试这个:

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

如果rs.getTimestamp返回null ,这将会中断,因此您可能希望将其分解为较小的语句并添加对null检查。

请注意,这可以更容易,因为DateTime的构造函数采用java.util.DateTimestamp是以下的子类:

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

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

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

试试:

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