我是Stackoverflow的新手,所以我会尽力满足使用要求。我想知道是否有办法获得给定实体的更改/快照的完整列表。目前,它适用于Singular Properties的版本,以及Collection Property的添加和删除。但我无法找到收集属性中的子实体何时更新。
给出两个实体和一个LinkEntity:
@Entity
class Person {
@Id
Long id;
@OneToMany(mappedBy = "person", cascade = CascadeType.ALL)
Set<LinkAddress> addresses;
}
@Entity
class Address {
@Id
Long id;
@OneToMany(mappedBy = "address")
Set<Address> persons;
}
@Entity
class LinkPersonAddress {
@Id
Long id;
@ManyToOne
@ShallowReference
Person person;
@ManyToOne
@ShallowReference
Address address;
String linkType;
}
我的用例如下。我通过Id#1得到一个特定的人,然后改变特定地址的类型(即HOME-&gt; WORK)。我使用修改后的Set保存Person并让JPA Cascade进行更改。尽管所有用于Person,Address和LinkPersonAddress的Spring数据存储库都使用@JaversSpringDataAuditable注释,但我无法检索此更新&#34;使用Javers QueryBuilder与Person和Id#1类。这是有意义的,因为我应该查询类LinkPersonAddress,但我如何指定我只想要LinkPersonAddress的更改与Id#1的人相关。
PS:请为代码段中的任何拼写错误道歉,因为我没有在我的开发环境中编写它。
答案 0 :(得分:0)
让我们从映射开始。你做错了,Address是一个经典的ValueObject(见https://javers.org/documentation/domain-configuration/#value-object)而不是Entity。这是因为:
更正映射后,可以使用ChildValueObjects过滤器,请参阅https://javers.org/documentation/jql-examples/#child-value-objects-filter