gpt4 book ai didi

java - 如何使用实体管理器和条件在 hibernate 中创建批量更新?

转载 作者:行者123 更新时间:2023-12-02 11:05:04 24 4
gpt4 key购买 nike

我尝试的只是在 bd 中创建批量更新,但遇到了问题。我读了很多文章,所有文章都手动管理 session ,我不想这样做。如何为我的实体创建批量更新我编写以下代码:

@Transactional(propagation = Propagation.REQUIRED)
public void update(List<MyClass> objects) {
for (MyClass o: objects) {
getEntityManager().merge(o);
}
}

此外,我还添加了以下属性hibernate.jdbc.batch_size=32

我的错误在哪里?

最佳答案

首先,如果“MyClass”是版本化实体,那么您需要启用以下属性:

hibernate.jdbc.batch_versioned_data=true

现在,您没有提及列表“对象”是否包含 hibernate 管理或分离的对象。如果这些不是分离的实例,则不需要合并,因为 hibernate 已经知道实体发生的更改。

最后,您只需要使用 getEntityManager().flush() 刷新 session 即可;这应该刷新对数据库的所有更改,并且 hibernate 应该发挥其批处理魔力。

这个关于批处理的指南应该会有所帮助:https://vladmihalcea.com/how-to-batch-insert-and-update-statements-with-hibernate/

关于java - 如何使用实体管理器和条件在 hibernate 中创建批量更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51038659/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com