Я хотел бы иметь возможность резервного копирования и восстановления базы данных через 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
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
Что я делаю не так? Я думаю, что я не могу сохранить сущность (восстановить из файла), которая имеет некоторый идентификатор, но мне нужно сделать это и сохранить текущий идентификатор (чтобы сохранить связь между сущностями), но гибернация не позволит мне сделать это.
Спасибо за любой ответ.