JDBC драйверът се справя добре.
Както вече научихте в коментарите, проблемът е, че
a) Spring Data JDBC вече изисква Dialect
за всяка база данни
b) Spring Data JDBC не се доставя с Dialect
за Oracle.
Поправката:
Както е описано в Диалектът на Spring Data JDBC Firebird не е разпознат и в https://spring .io/blog/2020/05/20/migrating-to-spring-data-jdbc-2-0
трябва да предоставите свой собствен Dialect
изпълнение точно сега.
Нещо подобно трябва да работи:
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;
}
}
След това трябва да направите Dialect
достъпен чрез DialectProvider
както е описано в посочения въпрос на Stackoverflow:
Малко предистория:
Досега екипът на Spring Data не провежда своите интеграционни тестове с база данни на Oracle. Това е така, защото от известно време не беше ясно как да се направи това по законен начин, тъй като целият код, включително инфраструктурата за изграждане, беше с отворен код и Oracle изискваше приемане от всякакви неща за използване на екземпляр на база данни или техния драйвер.
Досега изображенията на Docker са налични за тестване, а JDBC драйверът е достъпен от Maven Central. Все още е малко трудно, тъй като текущите опции за докер изображения, за които знам, ви позволяват да избирате между размер на изображението от много GB или време за стартиране от около 15 минути.
Както и да е, има член на общността, който работи по проблема:https://jira.spring.io/ преглед/DATAJDBC-256
Затова съм уверен, че ще можем да поддържаме напълно Oracle в близко бъдеще.