Der JDBC-Treiber funktioniert einwandfrei.
Wie Sie bereits in den Kommentaren erfahren haben, besteht das Problem darin, dass
a) Spring Data JDBC erfordert jetzt einen Dialect
für jede Datenbank
b) Spring Data JDBC wird nicht mit einem Dialect
ausgeliefert für Oracle.
Die Lösung:
Wie in Spring Data JDBC Firebird-Dialekt nicht erkanntDialect
angeben Umsetzung jetzt.
So etwas sollte funktionieren:
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;
}
}
Sie müssen dann den Dialect
machen über einen DialectProvider
verfügbar wie in der referenzierten Stackoverflow-Frage beschrieben:
Einige Hintergrundinformationen:
Bisher führt das Spring Data-Team seine Integrationstests nicht mit einer Oracle-Datenbank durch. Dies liegt daran, dass lange Zeit unklar war, wie dies legal geschehen soll, da der gesamte Code einschließlich der Build-Infrastruktur Open Source war und Oracle akzeptiert werden musste allerlei Dinge, um eine Datenbankinstanz oder deren Treiber zu verwenden.
Inzwischen sind Docker-Images zum Testen verfügbar und der JDBC-Treiber ist von Maven Central erhältlich. Es ist immer noch ein wenig knifflig, da die aktuellen Optionen für Docker-Images, die ich kenne, Sie zwischen einer Image-Größe von vielen GBs oder einer Startzeit von etwa 15 Minuten wählen lassen.
Jedenfalls arbeitet ein Community-Mitglied an dem Problem:https://jira.spring.io/ durchsuchen/DATAJDBC-256
Ich bin daher zuversichtlich, dass wir Oracle in naher Zukunft vollständig unterstützen können.