Я использую Javers (5.2.6) с интеграцией Spring и автоматическим сохранением сущностей в истории Javers. Мои репозитории выглядят как
@Repository
@JaversSpringDataAuditable
interface MyEntityRepository extends JpaRepository<MyEntity, Long> {}
Допустим, MyEntity
объект выглядит как
class MyEntity {
Long id;
String code;
Boolean active;
Timestamp activeFrom;
Timestamp activeTo;
}
Поле
MyEntity.activeTo
имеет значение по умолчанию, например MAX DATE (очень дальняя дата в будущем), которое сохраняется, если объект не активен. Когда я деактивирую одну сущность, ее activeTo
устанавливается на текущую метку времени.
Проблема в том, что Javers сохраняет версии моей сущности (когда я изменяю поле code
) с этим значением MAX DATE , поэтому снимки выглядят как
CHANGE DATE | CODE | ACTIVE | ACTIVE_TO
01.04.2019 'A' TRUE 31.12.2099
02.04.2019 'B' TRUE 31.12.2099
03.04.2019 'C' TRUE 31.12.2099
04.04.2019 'D' TRUE 31.12.2099
05.04.2019 'D' FALSE 05.04.2019
И, как вы видите, невозможно понять, как долго снимок был активен, не извлекая все снимки, упорядочивая их по дате изменения и вручную вычисляя active to field real значение.
Как решить эту проблему? Я знаю, что могу использовать Javers вручную, самостоятельно вызывая службу истории, но считаю очень удобным использование @ JaversSpringDataAuditable , поскольку в моем приложении много объектов
Есть ли какой-нибудь постобработанный или механизм, похожий на сохраненный объект ?