java Javers将值对象存储为单个文档,导致“跳过”和“限制”无法按预期工作
我有一个包含一个值对象的实体。第一次保存这个实体时,我可以看到Javers在jv\u快照中存储了两条初始记录。一个用于人和一个用于地址。我正在使用Javers3.8.0和Spring Boot与Mongo存储库集成
当我们存储初始记录或后续更新时,值对象是否可能嵌套在主实体中,而不是创建单个记录?因为当我使用limit和skip进行分页时,它被计算为两个而不是一个记录
public class Person {
private Long id;
private String name;
private Address address;
//getter setter ommited
}
// on another file
public class Address {
private String city
//getter setter ommited
}
这是我用来检索更改的查询,这里我希望有5个不同的快照,如果我在同一个人实体上做了5个更改,但是由于我上面描述的原因,我得到的快照少于5个
javers.findChanges(
QueryBuilder.byInstanceId(documentId, Person.class)
.withChildValueObjects()
.limit(5)
.build())
# 1 楼答案
在JaVers中,每个对象(值对象或实体)总是使用自己的快照进行持久化。没有嵌套的快照。如果要查询具有ChildValueObject的实体,则这些值对象使用总体快照限制