【发布时间】:2019-10-26 08:04:18
【问题描述】:
我希望能够通过 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(以保持实体之间的链接),但休眠不会让我这样做。
感谢您的任何回答。
【问题讨论】:
-
也许问题是described here。由于这不是事务问题,因此它与
or unsaved-value mapping was incorrect部分有关。不过,我宁愿依靠数据库机制进行备份和恢复。
标签: java database hibernate jakarta-ee database-backups