Javers Spring在保存到历史记录期间设置特定字段数据

时间:2019-04-05 12:16:19

标签: java spring javers

我正在将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 非常方便,因为我的应用程序中有很多实体

是否有任何后期处理类似实体保存的机制?

0 个答案:

没有答案