我正在将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使用此 MAX DATE 值保存了我的实体版本(当我更改code
字段时),因此快照看起来像
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
如您所见,如果不获取所有快照,按更改日期对其进行排序并手动计算 字段真实值。
如何解决此问题?我知道我可以通过自己调用历史记录服务来手动使用Javers,但是我发现使用 @JaversSpringDataAuditable 非常方便,因为我的应用程序中有很多实体
是否有任何后期处理或类似实体保存的机制?