使用 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" )
);
我在我的 HQL 代码中使用了已弃用的 class。
我解决了这个问题,问题就解决了。
我用 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" )
);
我在我的 HQL 代码中使用了已弃用的 class。 我解决了这个问题,问题就解决了。