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

Update records with timestamp where clause with Hibernate HQL

我用 Hibernate HQL 写了一个查询,用时间戳列更新了一些记录:

where 子句:

creationTime >= :creationTimeFrom and creationTime <= :creationTimeTo

设置参数:

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

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

我猜问题是关于 timezone.The oracle 服务器时区设置为 UTC。但是客户端的时区不同。

您可能想尝试明确设置时区,否则将使用默认的 JVM 日历。

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

从 Hibernate 5.2.3 开始:

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

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

我在我的 HQL 代码中使用了已弃用的 class。 我解决了这个问题,问题就解决了。