Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Hibernate:tidak dapat menjalankan kueri manipulasi massal asli

Saat memiliki kueri berparameter dalam database (pernyataan yang disiapkan), menetapkan nilai ke parameter TIDAK HARUS mengubah struktur dan jalur eksekusi kueri (jika tidak, database tidak memperlakukannya sebagai kueri berparameter dan akan mengeluarkan pengecualian).

Itu sebabnya Anda tidak dapat menyiapkan pernyataan untuk kueri seperti:

  • select * from myTable order by ?
  • select id, f1, ? from myTable
  • select * from ? .

karena menetapkan nilai ke setiap parameter mengubah jalur eksekusi kueri (ingat bahwa kueri pernyataan yang disiapkan diurai satu kali dan menghasilkan jalur eksekusi tunggal).

Aturan yang sama berlaku untuk pengurai kueri Hibernasi, Anda tidak boleh menetapkan parameter nilai yang mengubah struktur kueri.

Menetapkan string dengan nilai 1, 2, 3 untuk parameter HARUS-TO-BE-A-NUMBER sama saja, sebenarnya query pertama akan diterjemahkan sama seperti update weight_note_receipt set pledge_id =:pledge where wn_id = :wns tapi yang kedua akan diterjemahkan sebagai update weight_note_receipt set pledge_id =:pledge where (wn_id = :x1 or wn_id = :x2 or wn_id = :x3) , kueri yang jelas berbeda dengan jalur eksekusi yang berbeda.

Jadi meskipun Hibernate tidak mengeluarkan pengecualian, database Anda akan melakukannya.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL 1062 - Entri duplikat '0' untuk kunci 'PRIMARY'

  2. mysql dan php PDO - apa yang terjadi pada transaksi yang tidak dikomit jika koneksi ditutup secara tidak terduga?

  3. Kecualikan nilai tertentu saat membagi nilai tetap ke negara berdasarkan bagi hasil harian

  4. Bagaimana cara membuat objek JSON di MySql dengan nilai boolean?

  5. Mendeteksi jika nilai LAMA tidak sama dengan nilai BARU dan nilai LAMA adalah NULL