Вероятно вашите заявки се пренаписват, но няма да разберете дали, като погледнете регистрационните файлове на Hibernate SQL. Hibernate не пренаписва изразите за вмъкване - MySQL драйверът ги пренаписва. С други думи, Hibernate ще изпрати множество оператори за вмъкване на драйвера и след това той ще ги пренапише. Така че регистрационните файлове на Hibernate ви показват само какво SQL Hibernate е изпратил на драйвера, а не какъв SQL е изпратил драйверът към базата данни.
Можете да потвърдите това, като активирате параметъра profileSQL на MySQL в URL адреса на връзката:
<b:property name="jdbcUrl" value="jdbc:mysql://server:3306/db?autoReconnect=true&rewriteBatchedStatements=true&profileSQL=true" />
Използвайки пример, подобен на вашия, ето как изглежда моят изход:
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 реда се регистрират от Hibernate, въпреки че това всъщност не се изпраща към базата данни на MySQL. Последният ред идва от драйвера на MySQL и ясно показва едно пакетно вмъкване с множество стойности и това всъщност се изпраща към базата данни на MySQL.