sql >> Database teknologi >  >> RDS >> Oracle

Ny fejl i spring boot 2.3.0.RELEASE:UnsatisfiedDependencyException for Oracle 12.2.0.1 jdbcdriver, men ikke med mysql jdbcdriver

JDBC-driveren klarer sig fint.

Som du allerede har lært i kommentarerne, er problemet, at

a) Spring Data JDBC kræver nu en Dialect for hver database

b) Spring Data JDBC leveres ikke med en Dialect for Oracle.

Retningen:

Som beskrevet i Forårsdata JDBC Firebird-dialekt genkendes ikke og i https://spring .io/blog/2020/05/20/migrating-to-spring-data-jdbc-2-0 du skal angive din egen Dialect implementering lige nu.

Noget som dette burde virke:

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;
    }

}

Du skal derefter lave Dialect tilgængelig via en DialectProvider som beskrevet i det refererede Stackoverflow-spørgsmål:

Noget baggrund:

Indtil videre kører Spring Data-teamet ikke deres integrationstest med en Oracle-database. Dette skyldes, at det i et stykke tid var uklart, hvordan man gør det på en lovlig måde, da al koden inklusive byggeinfrastrukturen var open source, og Oracle krævede accept af alle slags ting for at bruge en databaseinstans eller deres driver.

Nu er Docker-billeder tilgængelige til test, og JDBC-driveren er tilgængelig fra Maven Central. Det er stadig lidt vanskeligt, da de nuværende muligheder for docker-billeder, som jeg er klar over, lader dig vælge mellem en billedstørrelse på mange GB eller en opstartstid på omkring 15 minutter.

Der er i hvert fald et fællesskabsmedlem, der arbejder på problemet:https://jira.spring.io/ browse/DATAJDBC-256

Jeg er derfor overbevist om, at vi vil være i stand til at støtte Oracle fuldt ud i den nærmeste fremtid.



  1. Hvordan undslipper jeg et reserveret ord i Oracle?

  2. mysql kan ikke startes i Mgt Development Environment

  3. mysql datoformatering med php

  4. Kan ikke oprette tabel med forberedt erklæring