No se puede conectar Spring JPA con Oracle

Nov 28 2020

Hola, estoy usando la siguiente configuración, pero todavía recibo un error.

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

debajo de la dependencia que usé en pom.xml

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

todavía me aparece el siguiente error.

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

¿Cuál es el problema en mi configuración? en lugar de driver-classi también la inspección con driver-class-namelo comprobé OracleDialect, Oracle10gDialecty Oracle12cDialect. para los 3 recibo el mismo error.

Respuestas

2 priyranjan Nov 29 2020 at 00:59

no hay nada como el dialecto "Oracle12cDialect". necesita escribir de manera adecuada. : -

en su archivo de propiedad es:

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

pero debería 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

si no funciona, cambie a:

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

El dialecto de Oracle12c se puede utilizar con hibernate 5.x.

Deberías agregar esto a tu 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>

Tenga en cuenta que necesita el dialecto para la versión principal de Oracle DB.

Sin embargo, no puedo ver el marco exacto que estás usando. Verifique que la dependencia obove sea parte de su classpath. Esto puede venir con otras dependencias como JPA o spring-data.


También tenga en cuenta que su cadena jdbc parece estar mal.

Debe tener un aspecto como este:

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

Consulte aquí para obtener más detalles: formato de cadena de URL para conectarse a la base de datos Oracle con JDBC