По историческим причинам мы используем envers, а также специальный механизм аудита. Некоторые таблицы проверяются envers, но одна таблица и большинство ее зависимых таблиц проверяются вручную.
Наше специальное решение создает копию графа объектов, добавляет отметку времени и сохраняет объекты *history в соответствующих таблицах.
Допустим, у нас есть объект A
, который ссылается на набор объектов B
, который ссылается на набор объектов C
. Если мы обнаружим обновление или вставку A
, мы создадим копию A_History
, которая ссылается на набор сущностей B_History
, который ссылается на набор сущностей C_History
. Все свойства упомянутых сущностей копируются в соответствующий объект *history, а полный граф сохраняется. На самом деле мы имеем дело с 12 таблицами для представления графа объекта.
Чтобы избавиться от старого кода и унифицировать поведение, мы хотели бы перенести весь аудит на envers. Но, конечно, хотелось бы сохранить уже существующую историю, пусть даже она не была создана envers.
Я нашел несколько руководств по созданию исходной информации о ревизии, если в существующий проект вводится envers. Но я не нашел никакой помощи для переноса уже существующей информации о ревизии, не управляемой envers.
Есть ли способ выполнить миграцию, кроме написания необработанных операторов SQL?