java - 命名查询返回 java.sql.Timestamp 而不是 java.util.Date
问题描述
我正在使用休眠 5.3.13
我正在使用命名查询查询日期:
public Date getDate() {
return entityManager.createNamedQuery("MyEntity.myNamedQuery", Date.class)
//setting some parameters here
.getSingleResult();
}
列定义:
@Column(name="date")
@Temporal(TemporalType.TIMESTAMP)
private Date date;
此查询工作正常,但当我想要 java.util.Date 时,休眠返回 java.sql.Timestamp。
是否可以让休眠返回日期而不是时间戳?
解决方案
正如我们所见,java.util.Date 类型(毫秒精度)不足以处理 Timestamp 值(纳秒精度)。
因此,当我们从数据库中检索实体时,我们会毫不意外地在该字段中找到一个 java.sql.Timestamp 实例,即使我们最初保存了一个 java.util.Date:
[...]
这对我们的代码应该没问题,因为时间戳扩展了日期。
您可以将返回的值转换为Date
.
总体上查看参考资料,它为您提供了更多详细信息。
推荐阅读
- javascript - SWR 在每个 api 调用中都会公开 client-id 和 Bearer 令牌,我应该正确对待
- sql - 将此 sql 左连接查询转换为 spark 数据帧(scala)
- numpy - 位移时保留标量 dtype
- yaml - 根据不同的值更改键值
- javascript - How typescript implements enumerations?
- python - Can you help me to know the input shape of my LSTM
- c# - How to Get An IConfiguration For Dependency Injection In A Console App
- html - Can you Pass Secret to Custom Element?
- nrwl-nx - Nrwl: Storybook giving me error TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string. Received undefined
- geoserver - Uploading and Publishing Raster file (*.tiff) on Geo server but getting 'No Layer' Error