Я использую Hibernate 5.4 вместе с включенным Envers ValidityAuditStrategy. Мне нужно перенести данные из другой базы данных, в которой также есть столбцы аудита в каждой таблице. При переносе данных из исходной базы данных я также использую Hibernate для сохранения перенесенных данных. Вопрос в том, что, пока я сохраняю данные, мне нужно установить столбцы аудита (create_date, create_user, modify_date, modify_user), как в исходной базе данных (creator, lastModifyDate и lastModifyBy), но Envers переопределяет данные столбцов, выполнив вход в систему. данные пользователя. Но мне нужно сохранить данные аудита, как в исходной базе данных, только для процесса миграции.
До сих пор я использовал EnversPostInsertEventListenerImpl. Но когда я регистрирую свой пользовательский EnversPostInsertEventListenerImpl и пытаюсь переопределить столбцы аудита, как в исходной базе данных, Envers позволяет мне только установить create_user и create_date. modify_user и modify_date устанавливаются информацией текущего сеанса.
Есть ли у вас какие-либо предложения?
public class MyEnversPostInsertEventListener extends EnversPostInsertEventListenerImpl {
public MyEnversPostInsertEventListener(EnversService enversService) {
super(enversService);
}
@Override
public void onPostInsert(PostInsertEvent event) {
BaseObject baseObject = (BaseObject) event.getEntity();
if (baseObject != null && baseObject.isMigrating()) {
if (baseObject instanceof Cluster) {
Cluster cluster = (Cluster) baseObject;
cluster.setCreateUser(cluster.getCreator());
cluster.setCreateDate(cluster.getLastModifyDate());
cluster.setModifyUser(cluster.getLastModifyBy());
cluster.setModifyDate(cluster.getLastModifyDate());
}
}
super.onPostInsert(event);
}
}