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.