Java Date Hibernate切断时间
我在Oracle DB中有一个Date类型列,它包含日期和时间。 但是当我试图在java应用程序中获取数据时,它将返回带有一堆零而不是实时的日期。 在代码中,它将像:
SQLQuery sqlQuery = session.createSQLQuery("SELECT table.id, table.date FROM table"); List resultArray = sqlQuery.list(); Date date = (Date)resultArray[1];
如果它是26-feb-2010 17:59:16在DB中我会得到26-feb-2010 00:00:00如何随着时间的推移得到它?
我不是Oracle的专家,但您可能需要DateTime
列类型来获取时间戳。
有了这个,你需要使用java.sql.Timestamp
JDBC类型。
正如其他人已经说过的那样,你需要使用java.sql.Timestamp
来获取时间。
但是,如果在Oracle的DATE列上使用@Temporal(TemporalType.TIMESTAMP)
注释,Hibernate将会抱怨并抛出架构validation错误。 要避免这些,请添加如下所示的columnDefinition
:
@Temporal(TemporalType.TIMESTAMP) @Column(name="EVENTTIME", columnDefinition="DATE") private Date eventTime;
我遇到了同样的问题(数据库中的Oracle Date类型)。
以下映射适用于我:
我过去也遇到过这个问题。 要解决它,请更改您的hibernate映射:
至
您可以将数据类型保留在Hibernate对象中作为java.util.Date。
是的它也工作正常hibernate 3.3,使用ojdbc6.jar并在注释中将日期更改为时间戳,如下所示
@Id @Temporal(TemporalType.TIMESTAMP) @Column(name = "TDATE", length = 7) public Date getTdate() { return this.tdate; } public void setTdate(Date tdate) { this.tdate = tdate; }
尝试这个:
session.createSQLQuery("SELECT table.id as i, table.date as d FROM table") .addScalar("i", Hibernate.LONG) // Or whatever type id is .addScalar("d", Hibernate.TIMESTAMP);
也许你有这个问题? 确保您拥有最新的JDBC驱动程序,文件名应为ojdbc5.jar。
我最近遇到了同样的问题。 这是我的方法……
因此,在这种情况下,在QueryImplementation类中定义一个for循环 ,以便它检查数据库表的所有列的类型。 如果列名是DATE类型,则将addScalar(“columnName”,new Timestamptype())附加到查询构建器。 通过这种方式,Date类型列将在java应用程序中显示TimeStamp。
请在下面找到示例代码:
SQLQuery hibernateQuery = getSession().createSQLQuery(sqlQuery); Set columns = columnDataTypes.keySet(); for (String column : columns) { if (columnDataTypes.get(column).equals(SqlType.DATE.name())) { hibernateQuery.addScalar(column, new TimestampType()); } else { hibernateQuery.addScalar(column); } }
希望这可以帮助。
拉克什。
也许有点晚了,但在我的情况下,解决方案只是将@Temporal(TemporalType.DATE)添加到我的日期字段。
@Temporal(TemporalType.DATE) private Date date;
我们发现的另一个解决方案(当第一个不起作用时)是明确告诉hibernate类型:
@Type(type = "date") private Date date;
- 自动填充集
- 使用maven生成Hibernate元模型时出现IllegalStateException
- Spring JPA – 枚举中枚举字段的默认值
- 重写持久化实体的hashCode()和equals()方法的正确方法是什么?
- Hibernate配置错误(找不到元素’hibernate-configuration’的声明)
- 在使用Spring Data和Hibernate时,如何正确执行后台线程?
- TransactionRequiredException执行更新/删除查询
- org.hibernate.MappingException:未知实体:在spring orm中
- Hibernate通用DAO,通用服务和通用视图层?