【问题标题】:Not able to connect spring jpa with Oracle无法将 spring jpa 与 Oracle 连接
【发布时间】:2020-11-28 12:21:53
【问题描述】:

您好,我正在使用以下配置,但仍然出现错误。

spring.datasource.url=jdbc:oracle:thin@sca00tof.us.dell.com:1521:mfg1229
spring.datasource.username=apps
spring.datasource.password=xxxx
spring.datasource.driver-class=oracle.jdbc.driver.OracleDriver
spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.dialect=Oracle12cDialect

我在 pom.xml 中使用的以下依赖项

    <dependency>
            <groupId>com.oracle.database.jdbc</groupId>
            <artifactId>ojdbc8</artifactId>
             <scope>runtime</scope>
   </dependency>

我仍然遇到错误。

Caused by: java.lang.ClassNotFoundException: Could not load requested class : Oracle12cDialect
    at org.hibernate.boot.registry.classloading.internal.AggregatedClassLoader.findClass(AggregatedClassLoader.java:210) ~[hibernate-core-5.4.23.Final.jar:5.4.23.Final]
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:589) ~[na:na]
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522) ~[na:na]
    at java.base/java.lang.Class.forName0(Native Method) ~[na:na]
    at java.base/java.lang.Clas?s.forName(Class.java:427) ~[na:na]
    enter code here

    at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:130) ~[hibernate-core-5.4.23.Final.jar:5.4.23.Final]
    ... 28 common frames omitted

我的配置有什么问题。而不是driver-class,我还检查了driver-class-name 我检查了OracleDialectOracle10gDialectOracle12cDialect。对于所有 3 我都遇到相同的错误。

【问题讨论】:

    标签: java spring spring-boot hibernate spring-data-jpa


    【解决方案1】:

    没有像“Oracle12cDialect”这样的方言。你需要以正确的方式写作。 :--

    在您的属性文件中是:

    spring.jpa.properties.hibernate.dialect=Oracle12cDialect
    spring.datasource.driver-class=oracle.jdbc.driver.OracleDriver
    spring.datasource.url=jdbc:oracle:thin@sca00tof.us.dell.com:1521:mfg1229
    

    但应该是:--

    spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.Oracle12cDialect
    spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
    spring.datasource.url=jdbc:oracle:thin@//sca00tof.us.dell.com:1521/mfg1229
    

    如果不起作用,请更改为:

    spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.Oracle10gDialect
    

    【讨论】:

    • 非常感谢。您的回答对我帮助很大。
    • 很高兴我的回答对您有所帮助
    【解决方案2】:

    Oracle12c 的方言可以与hibernate 5.x 一起使用。

    你应该把它添加到你的类路径中:

    <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-core -->
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>5.4.24.Final</version>
    </dependency>
    

    请注意,您需要对应 Oracle DB 版本的方言。

    我怎么看不到您正在使用的确切框架。请检查上述依赖项是否是您的类路径的一部分。这可能带有其他依赖项,例如 JPA oder spring-data。


    另外请注意,您的 jdbc 字符串似乎是错误的。

    应该是这样的:

    url="jdbc:oracle:thin:@sca00tof.us.dell.com:1521:mfg1229"
    

    详情请看这里:URL string format for connecting to Oracle database with JDBC

    【讨论】:

    • 谢谢。实际上它给出了同样的错误。 db url有什么问题吗?第一行错误是 :java.lang.RuntimeException: Driver oracle.jdbc.driver.OracleDriver 声称不接受 jdbcUrl, jdbc:oracle:thin@sca00tof.us.oracle.com:1521:mfg1229
    • 我编辑了我的答案。您在瘦后缺少“:”。
    • 非常感谢 Marcinek。那个小错误可能没有被注意到,我会很挣扎。感谢您强调和帮助我。
    猜你喜欢
    • 1970-01-01
    • 2017-02-23
    • 1970-01-01
    • 2015-06-06
    • 2021-06-06
    • 2021-10-23
    • 2019-05-05
    • 2018-10-22
    • 1970-01-01
    相关资源
    最近更新 更多