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

Batasan klausa Hibernate + Oracle IN, bagaimana cara mengatasinya?

Pertama, fakta bahwa Anda harus meneruskan lebih dari 2000 id (dilihat dari poin pertama Anda) ke kueri adalah bel peringatan itu sendiri. Mungkin ada cara yang lebih baik untuk memecahkan masalah mendasar.

Anda dapat menggunakan pendekatan #2 dan mengurutkan setiap daftar, lalu melakukan mergesort di dalam aplikasi. Itu akan membutuhkan kode tambahan, tetapi kemungkinan besar (dengan asumsi kueri aktual relatif cepat) berkinerja lebih baik daripada pendekatan #3.

Untuk #3, ada 2 kerugian besar untuk berurusan dengan tabel sementara:

  • sementara Hibernate mendukungnya (lihat Table.sqlTemporaryTableCreateString metode, ia menggunakan banyak metode pendukung di Dialect class), mereka digunakan secara internal dan akan memerlukan pengkodean tambahan dari Anda agar dapat diakses dari aplikasi.
  • yang lebih penting, menggunakan tabel sementara akan memaksa Anda untuk menulis kueri Anda sebagai SQL asli (karena tidak akan dipetakan). Jika Anda menggunakan API Kriteria, Anda harus menggunakan sqlRestriction dengan subkueri.


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

  2. Cara mengatur properti koneksi (termasuk Sinonim)

  3. 12c Paket Adaptif

  4. Kesalahan Oracle .Net ManagedDataAccess:Tidak dapat memuat jenis 'OracleInternal.Common.ConfigBaseClass' dari Majelis

  5. Melewati parameter ke file Oracle SQL dari file Batch