Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Bez względu na wszystko, nie mogę wsadowych instrukcji INSERT MySQL w Hibernate

Prawdopodobnie Twoje zapytania są przepisywane, ale nie wiesz tego, patrząc na logi Hibernate SQL. Hibernate nie przepisuje instrukcji insert - sterownik MySQL je przepisuje. Innymi słowy, Hibernate wyśle ​​do sterownika wiele instrukcji INSERT, a następnie je przepisze. Tak więc dzienniki Hibernate pokazują tylko to, co SQL Hibernate wysłał do sterownika, a nie jaki SQL sterownik wysłał do bazy danych.

Możesz to sprawdzić, włączając parametr profileSQL MySQL w adresie URL połączenia:

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

Używając przykładu podobnego do twojego, oto jak wygląda moje wyjście:

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)

Hibernate rejestruje pierwszych 10 wierszy, chociaż nie jest to faktycznie przesyłane do bazy danych MySQL. Ostatnia linia pochodzi ze sterownika MySQL i wyraźnie pokazuje pojedynczą wstawkę wsadową z wieloma wartościami i właśnie to jest wysyłane do bazy danych 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. Zwracanie JSON nie działa poprawnie

  2. Różne wyniki w sqlfiddle.com 5.5.30 i MariaDB 5.5.31

  3. Jak mogę użyć wiersza instrukcji mySQL SELECT IF, aby dołączyć do innej tabeli?

  4. MySQL:dynamiczne określanie klucza podstawowego tabeli

  5. Rozwiązywanie problemów z replikacją MySQL:część pierwsza