У меня есть простой пример объекта A, который имеет идентификатор и поле версии. Стратегия генерации идентификатора имеет значение TABLE. Свойства hibernate.jdbc.batch_size
и hibernate.jdbc.batch_versioned_data
установлены на 20
и true
.Hibernate, который запускает неожиданное поведение
Я пытаюсь сделать пакетную вставку объекта А со следующим:
for (int i = 0; i < 500; i++) {
A a = new A();
a.persist();
if (i % 20 == 0) {
em.flush();
em.clear();
}
}
Глядя на журналах MySQL, это приводит к 500 отдельных insert into a (version, id) values (0, X)
заявлений, в то время как я ожидал что-то вроде insert into a (version, id) values (0, 1), (0, 2),...(0, 20)
повторяется 25 раз ,
Установка hibernate.jdbc
уровня протоколирования для отладки показывает:
org.hibernate.jdbc.AbstractBatcher - Executing batch size: 20
org.hibernate.jdbc.AbstractBatcher - no batched statements to execute
Использование Hibernate 3.6.8, MySQL 5.5.
Что мне здесь не хватает?