Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Hibernate:không thể thực thi truy vấn thao tác hàng loạt gốc

Khi có truy vấn tham số hóa trong cơ sở dữ liệu (câu lệnh đã chuẩn bị), việc gán giá trị cho tham số KHÔNG ĐƯỢC thay đổi cấu trúc và đường dẫn thực thi của truy vấn (nếu không cơ sở dữ liệu không coi chúng là truy vấn được tham số hóa và sẽ đưa ra ngoại lệ).

Đó là lý do tại sao bạn không thể chuẩn bị các câu lệnh cho các truy vấn như:

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

bởi vì việc gán giá trị cho mỗi tham số sẽ thay đổi đường dẫn thực thi truy vấn (hãy nhớ rằng truy vấn của câu lệnh đã chuẩn bị được phân tích cú pháp một lần và dẫn đến một đường dẫn thực thi duy nhất).

Các quy tắc tương tự áp dụng cho trình phân tích cú pháp truy vấn Hibernate, bạn sẽ không chỉ định một giá trị cho tham số làm thay đổi cấu trúc truy vấn.

Gán một chuỗi với các giá trị 1, 2, 3 thành một tham số NÊN-ĐỂ-ĐƯỢC-SỐ là giống nhau, trên thực tế, truy vấn đầu tiên sẽ được dịch giống như update weight_note_receipt set pledge_id =:pledge where wn_id = :wns nhưng cái thứ hai sẽ được dịch là update weight_note_receipt set pledge_id =:pledge where (wn_id = :x1 or wn_id = :x2 or wn_id = :x3) , rõ ràng là các truy vấn khác nhau với các đường dẫn thực thi khác nhau.

Vì vậy, ngay cả khi Hibernate không đưa ra một ngoại lệ, cơ sở dữ liệu của bạn sẽ.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. chọn tất cả các cột có nhóm theo trong các truy vấn tiêu chí ngủ đông

  2. Hiển thị kết quả MySQL theo ngày

  3. Chuyển đổi một đối tượng thành một chuỗi trong PHP

  4. Làm cách nào để chỉ định trường truy vấn mẹ từ bên trong một truy vấn con trong MySQL?

  5. Làm cách nào để ngăn mysqldump chia kết xuất thành từng phần 1MB?