Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Novo erro no spring boot 2.3.0.RELEASE :UnsatisfiedDependencyException para Oracle 12.2.0.1 jdbcdriver mas não com mysql jdbcdriver


O driver JDBC está funcionando perfeitamente.

Como você já aprendeu nos comentários o problema é que

a) O Spring Data JDBC agora requer um Dialect para cada banco de dados

b) Spring Data JDBC não é fornecido com um Dialect para Oráculo.

A correção:


Conforme descrito em Dialeto Spring Data JDBC Firebird não reconhecido e em https://spring .io/blog/2020/05/20/migrating-to-spring-data-jdbc-2-0 você precisa fornecer seu próprio Dialect implementação agora.

Algo assim deve 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;
    }

}

Você então precisa fazer o Dialect disponível por meio de um DialectProvider conforme descrito na pergunta referenciada do Stackoverflow:

Alguns antecedentes:


Até agora, a equipe do Spring Data não executa seus testes de integração com um banco de dados Oracle. Isso ocorre porque há algum tempo não estava claro como fazer isso de maneira legal, já que todo o código, incluindo a infraestrutura de compilação, era de código aberto e a Oracle exigia a aceitação de todos os tipos de coisas para usar uma instância de banco de dados ou seu driver.

Até agora, as imagens do Docker estão disponíveis para teste e o driver JDBC está disponível no Maven Central. Ainda é um pouco complicado, pois as opções atuais para imagens docker que conheço permitem que você escolha entre um tamanho de imagem de muitos GBs ou um tempo de inicialização de cerca de 15 minutos.

De qualquer forma, há um membro da comunidade trabalhando no problema:https://jira.spring.io/ navegar/DATAJDBC-256

Estou, portanto, confiante de que poderemos oferecer suporte total à Oracle em um futuro próximo.