[英]getting DateTime from ResultSet in JdbcTemplate
在數據庫中,我的列是 TIMESTAMP 類型,所以我的 class 具有 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.Date
,其中Timestamp
是以下的子類:
variant.setDiscoveryDate(
new DateTime(rs.getTimestamp("discovery_dt_tm"))
);
但這也是錯誤的,因為Timestamp
class 的設計不好(參見javadoc的解釋)。
堅持第一個例子(使用getTime()
)
嘗試:
variant.setDiscoveryDate(new DateTime(rs.getTimestamp("discovery_dt_tm").getTime()));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.