gpt4 book ai didi

java - 使用 Hibernate 备份和恢复数据库

转载 作者:行者123 更新时间:2023-12-01 22:25:17 25 4
gpt4 key购买 nike

我希望能够通过 Hibernate 备份和恢复数据库。

流程是:

1) 将每个表中的所有实体获取到 HashMap,并将整个映射序列化到文件。

2) 从数据库中清除所有实体。

3) 反序列化文件并将所有实体保留回数据库。

在第 3 步中,我面临:

javax.persistence.OptimisticLockException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect) : [*.*.entities.User#1]

这段代码会发生这种情况:

session.saveOrUpdate(entity);
session.getTransaction().commit(); // <- here

我的所有实体都扩展了 BasicEntity,它只有这个 ID 定义:

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

我做错了什么?我认为,我无法保存实体(从文件中恢复),它有一些 ID,但我需要这样做并保存当前 ID(以保持实体之间的链接),但 hibernate 不会让我这样做。

感谢您的回答。

最佳答案

看起来像在当前提交之前在数据库中更新了另一个线程。尝试以下选项之一

//check if it's in the cache, if it's then refresh and then saveorupdate
if (session.contains(entity) session.refresh(entity);
saveOrUpdate(entity);

//Load the object from the database and then update
dbEntity= session.load(classname.class, 2);
saveOrUpdate(dbEntity);

关于java - 使用 Hibernate 备份和恢复数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58569082/

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