gpt4 book ai didi

java - Hibernate session.flush() 导致 ORA-00001 : unique constraint

转载 作者:行者123 更新时间:2023-11-30 03:17:33 27 4
gpt4 key购买 nike

我有这个方法,可以使用 hibernate 将数千条记录插入数据库。

根据这个article 、刷新和清除有助于释放一些宝贵的内存,下面的代码每 100 条记录执行一次此操作。但问题是:

ORA-00001: 违反唯一约束 (OWNER.FOO_TABLE_PK)

总是在调用代码session.flush()时发生,即在第100次保存之后(FOO_TABLE的PK是一个简单的长id)。我尝试完全删除 session.flush() 和 session.clear() 并在 session.save() 之后添加 session.evict(obj) 并解决了问题。我不确定这是否是一个好的做法。

你们知道为什么 session.flush() 会导致唯一约束错误吗?强烈建议定期冲洗和清理,但我不确定我是否正确使用它们。任何意见将不胜感激。谢谢!

    @Override
@Transactional
public void bulkSave(List<Foo> objList) {
Session session = sessionFactory.getCurrentSession();

if (objList != null) {
if (!objList.isEmpty()) {
int counter = 0;

for (Foo obj : objList) {
session.save(objList);
counter++;


if ((counter % 100) == 0) {
session.flush();
session.clear();
}

}

}
}

}

最佳答案

井刷新会导致状态刷新到数据库。如果存在主键违规,则说明您为对象分配主键的方式存在问题。

关于java - Hibernate session.flush() 导致 ORA-00001 : unique constraint,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32218169/

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