问题描述
我正在使用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 (将#修改为@)