【问题标题】:Eclipselink going to wrong database platformEclipselink 到错误的数据库平台
【发布时间】:2025-11-24 00:00:02
【问题描述】:

在尝试运行 JPA 应用程序时,我得到:

[EL Fine]: 2014-07-09   16:55:52.532--Thread(Thread[http-bio-8080-exec-6,5,main])--Detected database platform: org.eclipse.persistence.platform.database.HSQLPlatform

这不是正确的平台。 (应该是 Oracle 瘦客户端)。这 在另一台机器上签出时相同的项目工作正常。仅有的 我们可以检测到的差异是 jdk 版本(我的版本是 13 和 60)。

My Persistance.xml looks like:


<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
  <persistence-unit name="JPA_DatabasePU" transaction-type="RESOURCE_LOCAL">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <non-jta-data-source>wellsDB</non-jta-data-source>
    <class>my.domain.jpaDatabase.entities.Fred.Feature</class>
    <properties>
      <property name="javax.persistence.jdbc.driver" value="oracle.jdbc.OracleDriver"/>
      <property name="javax.persistence.jdbc.url"     value="jdbc:oracle:thin:user@//db.domain.my:1521/inst"/>
      <property name="javax.persistence.jdbc.user" value="username"/>
      <property name="javax.persistence.jdbc.password" value="password"/>
      <property name="eclipselink.logging.level" value="FINEST"/>
    </properties>
  </persistence-unit>
</persistence>

我错过了什么??

【问题讨论】:

  • 这是针对什么应用服务器运行的?使用 eclipselink 默认持久性提供程序告诉它使用应用程序服务器进行连接。它是针对不同的服务器运行的,还是针对其部署的服务器的配置与其他机器不同?
  • 检查,如果您没有在指向 hsql 数据库的应用服务器上配置 wellsDB 数据源。
  • 感谢您的回复。我在 Tomee 上运行它。不,没有 wellsDB 指向 hsql
  • 您是如何获得 EntityManagerFactory 实例的?您是否传递了可能无意中覆盖persistence.xml 属性的属性?对其中一个答案的评论表明,当您删除 non-jta-data-source 标记时,仍会使用数据源,因此我相信以某种方式注入了属性或数据源

标签: java spring jpa eclipselink


【解决方案1】:

答案是用全新安装的 Tomee 1.6 替换 Tomee 1.5 安装。我看不出 conf 文件有什么不同,但你在那里。从我的角度来看,重要的是这解决了这个问题。创建的战争部署在生产 Tomee 上也没有问题。

【讨论】:

    【解决方案2】:

    您可以尝试设置target database

    <property name="eclipselink.target-database" value="Oracle"/>
    

    【讨论】:

    • 好的,去掉 non-jta-source 行并添加。除了我看到的日志中的相同错误:
    • [EL 配置]: 2014-07-10 16:18:56.998--ServerSession(216742744)--Connection(1982790477)--Thread(Thread[http-bio-8080-exec-5 ,5,main])--connecting(DatabaseLogin(platform=>OraclePlatform user name=> "username" connector=>JNDIConnector datasource name=>null )) [EL Config]: 2014-07-10 16:18:57.335- -ServerSession(216742744)--Connection(2127675725)--Thread(Thread[http-bio-8080-exec-5,5,main])--连接:jdbc:hsqldb:file:data/hsqldb/hsqldb 用户:SA数据库:HSQL 数据库引擎版本:2.2.8 驱动程序:HSQL 数据库引擎驱动程序版本:2.2.8
    • 在正常工作的机器上,我得到的是 Oracle 10 etc etc.
    • 这真的很奇怪......我不知道有什么线索。当您深入研究此问题时,请务必更新帖子。
    • 如果保留非jta-data-source标签会怎样?
    最近更新 更多