我有ItemList
一个包含一组这样的Items
映射的类:
<class name="ItemList">
<id name="PID" column="PID">
<generator class="uuid" />
</id>
<version name="Version" />
<set cascaed="save-update" name="Items">
<key column="itemlist_id" />
<one-to-many class="Item" />
</set>
</class>
<class name="Item">
<id name="PID" column="PID">
<generator class="uuid" />
</id>
...
</class>
这是一个单向关联。我需要批量插入 1000 个Items
到ItemList
. 在批量插入上使用休眠文档,我有这样的事情:
ItemList itemList = ...
int i = 0;
for (Item item : someItems) {
// .. some processing..
itemList.getItems().add(item);
if (++i % 30 == 0) {
session.update(itemList);
session.flush();
session.clear();
}
}
显然存在一些问题。每次刷新时,插入 30 个项目。然后更新 ItemList 的版本。然后用 ItemList 的 PID 更新所有 30 个 Item。
- 如何避免在每批之后增加 ItemList 版本?
- 如何避免 30 次更新?