Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Hibernate tidak dapat mengambil SequenceInformation dari database

Saya memecahkan masalah sebagai berikut. Membuat ekstensi untuk Oracle12cDialect. Batasi nilai maksimum/minimum kolom ke 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";
    }

}

Dalam file application.properties mengacu pada implementasi dialek

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

Anda dapat membuat ulang urutan dengan membatasi nilai minimum dan maksimum. Dalam kasus saya, saya tidak bisa melakukannya. Kunci utama yang saya gunakan memiliki dimensi Nomor (12), yang berada dalam batas rentang dari -9223372036854775807 hingga 9223372036854775808 dengan margin yang besar



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Fungsi JSON_TABLE() di Oracle

  2. Cara Mendapatkan Kencan Kemarin di Oracle

  3. hitung saldo berjalan dalam kueri oracle

  4. SQL 'DAN' atau 'ATAU' didahulukan?

  5. Bagaimana menjalankan prosedur dengan prosedur DBMS_SCHEDULER.CREATE_JOB