【问题标题】:How to properly configure: spring boot / jpa / hibernate and oracle 19c如何正确配置:spring boot/jpa/hibernate和oracle 19c
【发布时间】:2020-04-17 14:39:04
【问题描述】:

我有一个奇怪的问题。当我将连接从 MySQL 更改为 Oracle (19c) 时,我无法运行我的 spring 应用程序。 当我使用 MySQL 时,一切都很好。我的应用程序非常简单,它什么都不做,它是用于测试连接的示例空项目。

这是我的application.properties (MySQL)

spring.datasource.url=jdbc:mysql://localhost:3306/fckOracle
spring.datasource.username = root
spring.datasource.password = student
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver

pom.xml (MySQL) 的一部分,

<dependency>
     <groupId>mysql</groupId>
     <artifactId>mysql-connector-java</artifactId>
     <scope>runtime</scope>
</dependency>

这是我的 application.properties (Oracle 19c)

spring.datasource.url=jdbc:oracle:thin:@localhost:1521:orcl
spring.datasource.username=ALBERT
spring.datasource.password=student
spring.datasource.driver-class-name=oracle.jdbc.OracleDriver

pom.xml (Oracle 19c) 的一部分

<dependency>
     <groupId>com.oracle.ojdbc</groupId>
     <artifactId>ojdbc8</artifactId>
</dependency>

好的,当我尝试使用 oracle 连接运行我的应用程序时,编译器无法加载方言。程序被冻结并且 localhost:8080 不起作用,这是我的控制台:

我尝试了很多方言Oracle12cDialect、Oracle10gDialect...,结果总是一样,只有一个例外!当我把方言改成这样时:

spring.jpa.database-platform=org.hibernate.dialect.HSQLDialect

我的应用程序启动,但出现错误:

java.sql.SQLSyntaxErrorException: ORA-00942: table or view does not exist

localhost8080 正在工作,但我无法对我的 oracle 数据库进行任何操作。

有人知道如何修复这个 oracle 配置吗?

【问题讨论】:

  • 你试过了吗? *.com/questions/57715024/…
  • 嗯,是的,我看到了,但我不完全理解问题所在。 hibernate 是否遇到了方言 12c 的错误?在那篇文章中,那个家伙说,“它已经在较新的 5.4 版本中解决了” 我的休眠版本是 5.4.9.Final。那我觉得这个问题不关我的事吧?
  • 您是否尝试将您的方言设置为hibernate.dialect = org.hibernate.dialect.Oracle12cDialect 并删除与其他数据库方言相关的任何其他属性。
  • 你试过&lt;dependency&gt; &lt;groupId&gt;com.oracle.ojdbc&lt;/groupId&gt; &lt;artifactId&gt;ojdbc10&lt;/artifactId&gt; &lt;version&gt;19.3.0.0&lt;/version&gt; &lt;/dependency&gt;
  • Santossh Kumhar,我做到了:/ RamPrakash,我试过这个,我得到那个错误:textuploader.com/1oycz

标签: java mysql spring oracle spring-boot


【解决方案1】:

我有完全相同的问题,有帮助的一件事是为 oracle DB 使用旧的 ojdbc8 驱动程序,因此将现有的替换为:

<dependency>
    <groupId>com.oracle.database.jdbc</groupId>
    <artifactId>ojdbc8</artifactId>
    <version>12.2.0.1</version>
</dependency>

但我希望看到新驱动程序的解决方案,因为我有完全相同的问题,我必须使用 19.3.0.0 驱动程序

还有关于这个错误

java.sql.SQLSyntaxErrorException: ORA-00942: 表或视图不存在

尝试将spring.jpa.hibernate.ddl-auto 设置为updatecreate-drop。这样,Hibernate 将自动生成模式和表并删除它们(使用时create-drop)。当您仍在尝试应用程序的模型时,它特别有用。

【讨论】: