gpt4 book ai didi

java - 如何防止 hibernate 从日期时间中删除时间?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:46:23 24 4
gpt4 key购买 nike

我有一个应用程序使用 hibernate 映射对 SQL Server 数据库表中的多个 DATETIME 列执行选择。 hibernate 映射采用此 DATETIME 并将其转换为应用程序中的 java.util.Date 对象。

Database table

Start_time | datetime

10-OCT-2014 06:45:00
10-OCT-2014 13:30:00

问题是存储在数据库 DATETIME 字段中的时间被删除/截断,当 hibernate 将它们带入应用程序时,每个日期都以 00:00 的时间返回:

Hibernate 列映射:

.
.
<property name="start_dt" type="java.util.Date">
<column name="Start_time"/>
</property>
.

我使用适当的 getter/setter 将其映射到日期对象,我的查询执行如下所示:

Query query = session.createSQLQuery("SELECT Start_time FROM table")
.addScalar("Start_time", Hibernate.Date)
.setResultTransformer(Transformers.aliasToBean(Class.class);

我得到这个:

List<Date> = { '10/10/2014 00:00' , '10/10/2014 00:00' } 

我想要的是:

List<Date> = { '10/10/2014 06:45:00' , '10/10/2014 13:30:00' }

该应用程序正在执行与 Oracle 连接类似的操作,并且成功返回了时间。唯一的变量是我连接到 SQL Server 数据库。有谁知道如何防止时间被丢弃?

更新:

根据所选的答案,由于评论未正确显示,因此修复如下:

Query query = session.createSQLQuery("SELECT Start_time FROM table")
.addScalar("Start_time", Hibernate.TIMESTAMP)
.setResultTransformer(Transformers.aliasToBean(Class.class);

最佳答案

尝试使用时间戳

<property name="start_dt" type="timestamp">
<column name="Start_time"/>
</property>

ANSI SQL DATE 不包含时间

映射类型:日期
Java 类型:java.util.Date 或 java.sql.Date
ANSI SQL 类型:日期

映射类型:时间戳
Java 类型:java.util.Date 或 java.sql.Timestamp
ANSI SQL 类型:时间戳

关于java - 如何防止 hibernate 从日期时间中删除时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26676507/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com