Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Hibernate nie mógł pobrać SequenceInformation z bazy danych

Problem rozwiązałem w następujący sposób. Utworzono rozszerzenie dla Oracle12cDialect. Ograniczono maksymalną/minimalną wartość kolumn do SQL

package ru.mvawork.hibernate;

import org.hibernate.dialect.Oracle12cDialect;

@SuppressWarnings("unused")
public class CustomOracleDialect extends Oracle12cDialect {

    @Override
    public String getQuerySequencesString() {
        return "select SEQUENCE_OWNER, SEQUENCE_NAME, greatest(MIN_VALUE,         -9223372036854775807) MIN_VALUE,\n"+
                "Least(MAX_VALUE, 9223372036854775808) MAX_VALUE, INCREMENT_BY,     CYCLE_FLAG, ORDER_FLAG, CACHE_SIZE,\n"+
                "Least(greatest(LAST_NUMBER, -9223372036854775807), 9223372036854775808) LAST_NUMBER,\n"+
                "PARTITION_COUNT, SESSION_FLAG, KEEP_VALUE\n"+
                "from all_sequences";
    }

}

W pliku application.properties odniesiono się do implementacji dialektu

spring.jpa.properties.hibernate.dialect=ru.mvawork.hibernate.CustomOracleDialect

Możesz odtworzyć sekwencje, ograniczając wartości minimalne i maksymalne. W moim przypadku nie mogę tego zrobić. Klucze podstawowe, których używam, mają wymiar Number (12), który mieści się w zakresie od -9223372036854775807 do 9223372036854775808 z dużym marginesem



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. przekaż tablicę liczb całkowitych do procedury Oracle przez c#

  2. Zaktualizuj instrukcję z wewnętrznym sprzężeniem w Oracle

  3. Jak dodać wiodące zero do liczby w zapytaniu Oracle SQL?

  4. Upuszczanie połączonych użytkowników w bazie danych Oracle

  5. Jak przekazać argument do bloku PL/SQL w pliku sql o nazwie przy użyciu START w sqlplus?