JDBC-drivrutinen fungerar bra.
Som du redan har lärt dig i kommentarerna är problemet att
a) Spring Data JDBC kräver nu en Dialect
för varje databas
b) Spring Data JDBC levereras inte med en Dialect
för Oracle.
Lösningen:
Som beskrivs i Spring Data JDBC Firebird dialekt inte igenkänd och i https://spring .io/blog/2020/05/20/migrating-to-spring-data-jdbc-2-0
du måste ange din egen Dialect
implementering just nu.
Något sådant här borde fungera:
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 måste sedan göra Dialect
tillgänglig via en DialectProvider
som beskrivs i den refererade Stackoverflow-frågan:
Lite bakgrund:
Hittills har Spring Data-teamet inte kört sina integrationstester med en Oracle-databas. Detta beror på att det under en lång tid var oklart hur man gör det på ett lagligt sätt eftersom all kod inklusive bygginfrastrukturen var öppen källkod och Oracle krävde godtagande av alla typer av saker för att använda en databasinstans eller deras drivrutin.
Nu finns docker-bilder tillgängliga för testning och JDBC-drivrutinen är tillgänglig från Maven Central. Det är fortfarande lite knepigt eftersom de nuvarande alternativen för dockningsbilder som jag är medveten om låter dig välja mellan en bildstorlek på många GB eller en starttid på cirka 15 minuter.
Hur som helst finns det en gruppmedlem som arbetar med problemet:https://jira.spring.io/ bläddra/DATAJDBC-256
Jag är därför övertygad om att vi kommer att kunna stödja Oracle fullt ut inom en snar framtid.