org.eclipse.persistence.exceptions.ConversionException使用JPA将Oracle TIMESTAMPTZ转换为java.util.Date

问题描述

我正在使用Eclipselink 2.7.6,Oracle 12c,Payara 5,运行查询时遇到转换异常。

实体定义为:

    @Column(name = "RUN_START_TIME")
    @Temporal(TemporalType.TIMESTAMP)
    private Date runStartTime;
    @Column(name = "RUN_STOP_TIME")
    @Temporal(TemporalType.TIMESTAMP)
    private Date runStopTime;

persistence.xml文件具有以下属性:

<properties>
      <property name="eclipselink.logging.level" value="FINE"/>
      <property name="eclipselink.target-database" value="org.eclipse.persistence.platform.database.Oracle12Platform"/>
      <property name="eclipselink.target-server" value="Glassfish"/>
    </properties>

并且我在POM.xml中添加了以下依赖项:

<dependency>
    <groupId>org.eclipse.persistence</groupId>
    <artifactId>org.eclipse.persistence.oracle</artifactId>
    <version>2.7.6</version>
</dependency>

有人对我可能做错什么有任何建议吗?我已经看到了其他一些与此相关的主题,但是大多数主题都没有解决方案/答案,而其他主题似乎暗示我所定义的内容就足够了。我也有同样的代码库可用于MS SQL。

更新:我基于注释尝试了很多事情,包括使用各种类型的日期/时间戳格式,最后一种是java.time.OffsetDateTime。我收到相同的错误输出:

Exception [EclipseLink-3002] (Eclipse Persistence Services - 2.7.6.payara-p1): org.eclipse.persistence.exceptions.ConversionException
Exception Description: The object [oracle.sql.TIMESTAMPTZ@38b7d502],of class [class oracle.sql.TIMESTAMPTZ],from mapping [org.eclipse.persistence.mappings.DirectToFieldMapping[runStartTime-->ASR_RUN.RUN_START_TIME]] with descriptor [RelationalDescriptor(....ASRRun --> [DatabaseTable(ASR_RUN)])],could not be converted to [class java.time.OffsetDateTime].
    at org.eclipse.persistence.exceptions.ConversionException.couldNotBeConverted(ConversionException.java:81)
    at org.eclipse.persistence.internal.helper.ConversionManager.convertObjectToOffsetDateTime(ConversionManager.java:930)
    at org.eclipse.persistence.internal.helper.ConversionManager.convertObject(ConversionManager.java:123)
    at org.eclipse.persistence.internal.databaseaccess.DatasourcePlatform.convertObject(DatasourcePlatform.java:226)
    at org.eclipse.persistence.mappings.foundation.AbstractDirectMapping.getObjectValue(AbstractDirectMapping.java:611)
    at org.eclipse.persistence.queries.ReportQueryResult.processItemFromMapping(ReportQueryResult.java:186)

由于消息始终是相同的,只是类名发生了变化,因此我仍然认为我的配置不正确。我确保在POM文件中使用以下内容,以确保使用的是最新的日期格式:

        <dependency>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>org.eclipse.persistence.oracle</artifactId>
            <version>2.7.6</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.oracle.database.jdbc/ojdbc8 -->
        <!--dependency>
            <groupId>com.oracle.database.jdbc</groupId>
            <artifactId>ojdbc8</artifactId>
            <version>12.2.0.1</version>
        </dependency-->
        <!-- https://mvnrepository.com/artifact/com.oracle.database.jdbc/ojdbc8dms -->
        <dependency>
            <groupId>com.oracle.database.jdbc</groupId>
            <artifactId>ojdbc8dms</artifactId>
            <version>19.6.0.0</version>
        </dependency>
        <dependency>
            <groupId>javax.persistence</groupId>
            <artifactId>javax.persistence-api</artifactId>
            <version>2.2</version>
        </dependency>
        <dependency>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>eclipselink</artifactId>
            <version>2.7.6</version>
        </dependency>

我从注释版本中看到了各种版本的jdbc驱动程序。

我仍然不确定可能配置错误的内容。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...