Я использую mybatis для сохранения своих сущностей.Когда отложенная загрузка коллекций / ассоциаций сущностей включена, mybatis проксирует соответствующие сущности.
При сохранении этих объектов я хочу использовать javers, чтобы точно определить, что изменилось.Это не похоже на игру с ткачами.
Предоставляет ли javers ловушку для прокси-сервера, чтобы его можно было использовать из mybatis "из коробки"?
Альтернативой может быть "снятие прокси" с классов mybatis вручную.
Пример кода:
/**
* @param t The entity to be created or updated by this repository
* @return The new entity state after it was created or updated
*/
@Override
@Transactional
public T save(T entity) {
try {
int affectedRows;
T oldEntity = mapper.selectById(this.getId(entity));
if (oldEntity != null) {
Diff diff =
this.getEntityComparator().compare(oldEntity,entity);
// publish here changes to event sourcing
affectedRows = mapper.update(entity);
if (affectedRows != 1) throw new RepositoryException();
} else {
affectedRows = mapper.create(entity);
if (affectedRows != 1) throw new RepositoryException();
}
return mapper.selectById(this.getId(entity));
} catch (DataAccessException ex) {
throw this.getRepositoryException(ex);
}
}
Редактировать : Вот связанный (без ответа) вопрос, касающийся «снятия проксирования» с объектов mybatis: Как преобразовать объект прокси Mybatis Javassist в исходный объект (unproxyобъект)