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

Không có vấn đề gì, tôi không thể thực hiện hàng loạt các câu lệnh MySQL INSERT trong Hibernate

Có thể các truy vấn của bạn đang được viết lại nhưng bạn sẽ không biết nếu nhìn vào nhật ký SQL Hibernate. Hibernate không viết lại các câu lệnh chèn - trình điều khiển MySQL viết lại chúng. Nói cách khác, Hibernate sẽ gửi nhiều câu lệnh chèn tới trình điều khiển, và sau đó trình điều khiển sẽ viết lại chúng. Vì vậy, nhật ký Hibernate chỉ hiển thị cho bạn những gì SQL Hibernate đã gửi đến trình điều khiển, chứ không phải SQL nào mà trình điều khiển đã gửi đến cơ sở dữ liệu.

Bạn có thể xác minh điều này bằng cách bật tham số profileSQL của MySQL trong url kết nối:

<b:property name="jdbcUrl" value="jdbc:mysql://server:3306/db?autoReconnect=true&amp;rewriteBatchedStatements=true&amp;profileSQL=true" />

Sử dụng một ví dụ tương tự như của bạn, đây là kết quả đầu ra của tôi trông như thế nào:

insert into Person (firstName, lastName, id) values (?, ?, ?)
insert into Person (firstName, lastName, id) values (?, ?, ?)
insert into Person (firstName, lastName, id) values (?, ?, ?)
insert into Person (firstName, lastName, id) values (?, ?, ?)
insert into Person (firstName, lastName, id) values (?, ?, ?)
insert into Person (firstName, lastName, id) values (?, ?, ?)
insert into Person (firstName, lastName, id) values (?, ?, ?)
insert into Person (firstName, lastName, id) values (?, ?, ?)
insert into Person (firstName, lastName, id) values (?, ?, ?)
insert into Person (firstName, lastName, id) values (?, ?, ?)
Wed Feb 05 13:29:52 MST 2014 INFO: Profiler Event: [QUERY]  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) duration: 1 ms, connection-id: 81, statement-id: 33, resultset-id: 0, message: insert into Person (firstName, lastName, id) values ('person1', 'Name', 1),('person2', 'Name', 2),('person3', 'Name', 3),('person4', 'Name', 4),('person5', 'Name', 5),('person6', 'Name', 6),('person7', 'Name', 7),('person8', 'Name', 8),('person9', 'Name', 9),('person10', 'Name', 10)

10 dòng đầu tiên đang được ghi lại bởi Hibernate mặc dù đây không phải là những gì thực sự đang được gửi đến cơ sở dữ liệu MySQL. Dòng cuối cùng đến từ trình điều khiển MySQL và nó hiển thị rõ ràng một đoạn chèn hàng loạt với nhiều giá trị và đó là những gì thực sự đang được gửi đến cơ sở dữ liệu MySQL.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm việc với con trỏ tệp trên csv

  2. đọc / ghi dữ liệu unicode trong MySql

  3. Phương pháp hay nhất:Nhập tệp mySQL bằng PHP; truy vấn tách

  4. Tách giá trị mysql thành số phần không xác định

  5. Mysql:Cắt tất cả các trường trong cơ sở dữ liệu