Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 基于时间戳和即时消息的查询问题_Java_Oracle_Hibernate_Timezone - Fatal编程技术网

Java 基于时间戳和即时消息的查询问题

Java 基于时间戳和即时消息的查询问题,java,oracle,hibernate,timezone,Java,Oracle,Hibernate,Timezone,我试图在CriteriaAPI中进行查询,并查找日期大于或等于所提供日期的行 数据库Oracle->hibernate->spring启动应用程序 Oracle列定义:带时区的时间戳 Hibernate配置:jpa.properties.Hibernate.jdbc.time\u zone:UTC 服务器和数据库位于不同的时区 即时列映射 criteriaBuilder.greaterThanOrEqualTo(root.get(“date”),this.startDate) 生成的sql:

我试图在CriteriaAPI中进行查询,并查找日期大于或等于所提供日期的行

数据库Oracle->hibernate->spring启动应用程序

Oracle列定义:带时区的时间戳

Hibernate配置:jpa.properties.Hibernate.jdbc.time\u zone:UTC

服务器和数据库位于不同的时区

即时列映射

criteriaBuilder.greaterThanOrEqualTo(root.get(“date”),this.startDate)
生成的sql:

entity0_.date>=? 

BasicBinder      : binding parameter [7] as [TIMESTAMP] - [2019-10-01T00:11:11Z]
在sqlplus中执行此查询时

select * from plan where date >= TIMESTAMP '2019-10-01 00:11:11 UTC'
我得到了正确的结果,但在hibernate中,我得到了日期为2019-10-01 00:00:00 UTC的附加行,这是不正确的行为

你知道这个代码有什么问题吗


注:对于ZonedDateTime,这是相同的行为

猜测,它似乎是将时间戳强制转换为Java中的某个日期,这将删除时间组件,然后强制转换回时间戳,这将导致时间组件设置为午夜。另一种可能的解释是时区问题。它是否也包括午夜前的结果?我找到了一种解决方法,但它并不漂亮,我不知道为什么属性没有涵盖它:-Duser.timezone=UTCGreat!你可以把它贴出来作为你自己问题的答案。