使用Hibernate HQL使用时间戳记where子句更新记录

时间:2019-05-08 13:57:39

标签: oracle hibernate timestamp hql timestamp-with-timezone

我用Hibernate HQL编写了一个查询,该查询使用timestamp列更新了一些记录:

where子句:

creationTime >= :creationTimeFrom and creationTime <= :creationTimeTo

设置参数:

query.setDate("creationTimeFrom", creationTimeFrom);
query.setDate("creationTimeTo", creationTimeTo);

在某些情况下,查询结果与记录不正确匹配,并且某些记录没有更新,

我猜问题出在时区上.oracle服务器时区设置为UTC。但是客户端的时区不同。

2 个答案:

答案 0 :(得分:0)

您可能想尝试显式设置TimeZone,否则将使用默认的JVM日历。

TimeZone.setDefault( TimeZone.getTimeZone( "UTC" ) );

从Hibernate 5.2.3开始:

settings.put(
    AvailableSettings.JDBC_TIME_ZONE,
    TimeZone.getTimeZone( "UTC" )
);

参考:jdbc-time-zone-configuration-property:

答案 1 :(得分:0)

我在HQL代码中使用了不赞成使用的类。 我已解决问题已解决。