编程语言
首页 > 编程语言> > java-如何防止休眠从日期时间删除时间?

java-如何防止休眠从日期时间删除时间?

作者:互联网

我有一个使用休眠映射在SQL Server数据库表中的多个DATETIME列上执行选择的应用程序.休眠映射使用此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:

休眠列映射:

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

我将其映射到具有正确的getter / setter的date对象,并且我的查询执行如下所示:

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类型:DATE

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

标签:struts,hibernate,hibernate-mapping,sql,java
来源: https://codeday.me/bug/20191121/2049181.html