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

Nuovo errore nell'avvio primaverile 2.3.0.RELEASE:UnsatisfiedDependencyException per Oracle 12.2.0.1 jdbcdriver ma non con mysql jdbcdriver

Il driver JDBC funziona bene.

Come hai già appreso nei commenti il ​​problema è che

a) Spring Data JDBC ora richiede un Dialect per ogni database

b) Spring Data JDBC non viene fornito con un Dialect per Oracle.

La correzione:

Come descritto in Dialetto Spring Data JDBC Firebird non riconosciuto e in https://spring .io/blog/2020/05/20/migrating-to-spring-data-jdbc-2-0 devi fornire il tuo Dialect implementazione in questo momento.

Qualcosa del genere dovrebbe funzionare:

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

}

È quindi necessario creare il Dialect disponibile tramite un DialectProvider come descritto nella domanda Stackoverflow di riferimento:

Un po' di background:

Finora il team di Spring Data non ha eseguito i test di integrazione con un database Oracle. Questo perché per un po' di tempo non era chiaro come farlo in modo legale poiché tutto il codice, inclusa l'infrastruttura di compilazione, era open source e Oracle richiedeva l'accettazione di tutti i tipi di elementi per utilizzare un'istanza di database o il relativo driver.

A questo punto le immagini Docker sono disponibili per il test e il driver JDBC è disponibile da Maven Central. È ancora un po' complicato poiché le attuali opzioni per le immagini Docker di cui sono a conoscenza ti consentono di scegliere tra una dimensione dell'immagine di molti GB o un tempo di avvio di circa 15 minuti.

Ad ogni modo c'è un membro della comunità che sta lavorando al problema:https://jira.spring.io/ sfoglia/DATAJDBC-256

Sono quindi fiducioso che saremo in grado di supportare completamente Oracle nel prossimo futuro.