sql >> Base de Datos >  >> RDS >> Oracle

Nuevo error en Spring Boot 2.3.0.RELEASE:UnsatisfiedDependencyException para Oracle 12.2.0.1 jdbcdriver pero no con mysql jdbcdriver

El controlador JDBC funciona bien.

Como ya aprendiste en los comentarios el problema es que

a) Spring Data JDBC ahora requiere un Dialect para cada base de datos

b) Spring Data JDBC no se envía con un Dialect para Oracle.

La solución:

Como se describe en Dialecto Spring Data JDBC Firebird no reconocido y en https://spring .io/blog/2020/05/20/migrando-a-spring-data-jdbc-2-0 debe proporcionar su propio Dialect implementación ahora mismo.

Algo como esto debería funcionar:

class MyOracleDialect extends AnsiDialect {

    private static final LimitClause LIMIT_CLAUSE = new LimitClause() {

        @Override
        public String getLimit(long limit) {
            return String.format("FETCH NEXT %d ROWS ONLY", limit);
        }

        @Override
        public String getOffset(long offset) {
            return String.format("OFFSET %d ROWS", offset);
        }

        @Override
        public String getLimitOffset(long limit, long offset) {
            return String.format("OFFSET %d ROWS FETCH NEXT %d ROWS ONLY", offset, limit);
        }

        @Override
        public Position getClausePosition() {
            return Position.AFTER_ORDER_BY;
        }
    };

    @Override
    public LimitClause limit() {
        return LIMIT_CLAUSE;
    }

}

A continuación, debe hacer el Dialect disponible a través de un DialectProvider como se describe en la pregunta de Stackoverflow a la que se hace referencia:

Algunos antecedentes:

Hasta ahora, el equipo de Spring Data no ejecuta sus pruebas de integración con una base de datos de Oracle. Esto se debe a que durante bastante tiempo no estaba claro cómo hacerlo de manera legal, ya que todo el código, incluida la infraestructura de compilación, era de código abierto y Oracle requería la aceptación. de todo tipo de cosas para usar una instancia de base de datos o su controlador.

Por ahora, las imágenes de Docker están disponibles para realizar pruebas y el controlador JDBC está disponible en Maven Central. Todavía es un poco complicado ya que las opciones actuales para las imágenes acoplables que conozco le permiten elegir entre un tamaño de imagen de muchos GB o un tiempo de inicio de aproximadamente 15 minutos.

De todos modos, hay un miembro de la comunidad trabajando en el problema:https://jira.spring.io/ navegar/DATAJDBC-256

Por lo tanto, confío en que podremos brindar soporte completo a Oracle en un futuro cercano.