Javers Spring устанавливает конкретные данные поля при сохранении в историю - PullRequest
0 голосов
/ 05 апреля 2019

Я использую 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 , поскольку в моем приложении много объектов

Есть ли какой-нибудь постобработанный или механизм, похожий на сохраненный объект ?

...