Oracle
 sql >> база данни >  >> RDS >> Oracle

Нова грешка при пролетно зареждане 2.3.0.RELEASE:UnsatisfiedDependencyException за Oracle 12.2.0.1 jdbcdriver, но не и с mysql jdbcdriver

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 в близко бъдеще.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle CONNECT BY рекурсивна заявка за дете към родител, включва краен родител, който се самопрепраща

  2. Въз основа на ден на колона, свързан с дата като заглавие

  3. Oracle SQL - Завъртете редовете на обобщената таблица към колона и използвайте подзаявка в обобщената таблица

  4. Oracle SQL - Как да получите отделни редове с помощта на аналитична функция RANK() или DENSE_RANK() или ROW_NUMBER()?

  5. Как мога да филтрирам данни в Apex Grid, за да покажа определени неща за определени потребителски групи?