使用 JaVers 获取对象版本
Get object version with JaVers
我正在使用带有 Spring Boot 2.1 的 JaVers 5.6.3。保存历史记录工作正常,我也可以读取对象更改。
我使用这个代码:
List<Change> changes = javers.findChanges(jqlQuery.build());
我的问题是结果只包含提交 ID,不包含对象版本。在数据库中有一个 jv_snapshot.version
字段,其中包含真实对象版本。
如何在我的代码中获取它?
您可以使用快照获取版本,例如:
List<CdoSnapshot> snapshots = javers.findSnapshots(jqlQuery.build());
snapshots.forEach(snapshot -> {
System.out.println(snapshot.getVersion());
});
不知道有没有用
但你可以获得整个实体及其版本
首先获取影子,然后尝试从已提交的内容中获取快照。正如代码中给出的
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());
通过这种方式,您可以获得每个实体的版本,如果您找到更好的方法,请告诉我。
我正在使用带有 Spring Boot 2.1 的 JaVers 5.6.3。保存历史记录工作正常,我也可以读取对象更改。
我使用这个代码:
List<Change> changes = javers.findChanges(jqlQuery.build());
我的问题是结果只包含提交 ID,不包含对象版本。在数据库中有一个 jv_snapshot.version
字段,其中包含真实对象版本。
如何在我的代码中获取它?
您可以使用快照获取版本,例如:
List<CdoSnapshot> snapshots = javers.findSnapshots(jqlQuery.build());
snapshots.forEach(snapshot -> {
System.out.println(snapshot.getVersion());
});
不知道有没有用 但你可以获得整个实体及其版本
首先获取影子,然后尝试从已提交的内容中获取快照。正如代码中给出的
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());
通过这种方式,您可以获得每个实体的版本,如果您找到更好的方法,请告诉我。