Não é possível conectar spring jpa com Oracle

Nov 28 2020

Olá, estou usando a configuração abaixo e ainda estou recebendo erro.

spring.datasource.url=jdbc:oracle:[email protected]: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

abaixo da dependência que usei em pom.xml

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

ainda estou recebendo abaixo do erro.

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

Qual é o problema na minha configuração. em vez de driver-classeu também verificado com driver-class-nameque verifiquei OracleDialect, Oracle10gDialecte Oracle12cDialect. para todos os 3 estou recebendo o mesmo erro.

Respostas

2 priyranjan Nov 29 2020 at 00:59

não há nada como o dialeto "Oracle12cDialect". você precisa escrever de maneira adequada. : -

em seu arquivo de propriedade é:

spring.jpa.properties.hibernate.dialect=Oracle12cDialect
spring.datasource.driver-class=oracle.jdbc.driver.OracleDriver
spring.datasource.url=jdbc:oracle:[email protected]:1521:mfg1229

mas deveria ser: -

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

se não funcionar, mude para:

spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.Oracle10gDialect
2 Marcinek Nov 28 2020 at 19:39

O dialeto para Oracle12c pode ser usado com o hibernate 5.x.

Você deve adicionar isto ao seu classpath:

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

Observe que você precisa do dialeto para a versão correspondente do banco de dados Oracle.

No entanto, não consigo ver a estrutura exata que você está usando. Verifique se a dependência obove faz parte do seu caminho de classe. Isso pode vir com outras dependências, como JPA ou spring-data.


Observe também que sua string jdbc parece estar errada.

Deve ser assim:

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

Veja aqui para detalhes: formato de string de URL para conectar ao banco de dados Oracle com JDBC