我有一個簡單的示例實體A,它具有一個id和一個版本字段。 Id生成策略設置爲TABLE。屬性hibernate.jdbc.batch_size
和hibernate.jdbc.batch_versioned_data
設置爲20
和true
。Hibernate批處理意外行爲
我試圖做實體A的批量插入下列要求:
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。
我在這裏錯過了什麼?