【问题标题】:Get object version with JaVers使用 JaVers 获取对象版本
【发布时间】:2020-05-29 00:00:45
【问题描述】:

我正在使用带有 Spring Boot 2.1 的 JaVers 5.6.3。保存历史记录工作正常,我还可以读取对象更改。

我使用这个代码:

List<Change> changes = javers.findChanges(jqlQuery.build());

我的问题是结果只包含提交 ID,但不包含对象版本。在数据库中有一个jv_snapshot.version 字段,其中包含真实对象版本。

如何在我的代码中获取它?

【问题讨论】:

    标签: javers


    【解决方案1】:

    您可以使用快照获取版本,例如:

    List<CdoSnapshot> snapshots =  javers.findSnapshots(jqlQuery.build());
    snapshots.forEach(snapshot -> {
        System.out.println(snapshot.getVersion());
    });
    

    【讨论】:

      【解决方案2】:

      我不知道这是否有帮助 但你可以得到整个实体的版本

      首先获取影子,然后尝试从已提交的获取快照。如代码中给出的

       List<Shadow<YourObject>> shadows=        javers.findShadows(QueryBuilder.byInstance(optionalObject.get()).build());
      
       List<CdoSnapshot> changes=javers.findSnapshots(QueryBuilder.byInstanceId(id,YourObject.class).withCommitId(shadow.get(0).getCommitId()).build());
      

      通过这种方式,您可以获得每个实体的版本,如果您找到更好的方法,请告诉我。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-09-16
        • 1970-01-01
        • 2017-02-06
        • 1970-01-01
        • 1970-01-01
        • 2011-10-15
        • 2013-07-04
        • 1970-01-01
        相关资源
        最近更新 更多