当列表中某个项目的字段发生更改时,Javers 无法捕获更改

问题描述 投票:0回答:1

我有一份员工名单。当编辑此列表中的任何项目并且更改该项目的任何字段时,

javers
不会检测到更改。

class Company {
String companyName;
List<employee> employees;
...
}

class employee {
String name;
int age;
}

我正在尝试按以下方式通过 jqlQuery 构建 -

jqlQuery = QueryBuilder.byInstanceId(id, Company.class)
    .withShadowScope(ShadowScope.DEEP_PLUS)
    .withChangedPropertyIn(Arrays.stream(fields).map(Field::getName).toArray(String[]::new))
    .build();
List<Shadow> shadows = javers.findShadows(jqlQuery);

哪里, fields 是一个数组,其中包含我想要捕获更改的元素。 (这包括名单员工)

应该修改什么,以便如果我更改员工列表中假设任何一名员工的年龄,那么 Javers 可以捕获此更改?

我尝试更改影子范围来构建 jql 查询,以便 javers 也捕获任何列表元素中的更改,但它似乎不起作用

javers
1个回答
0
投票

employee
内的属性所做的更改不会显示在
Company
对象下。您在 Javers 中看到的与
company.employees
属性相关的唯一更改是在列表中添加或删除员工。对
employee
本身的更改将作为员工的一部分进行审核。

要查看对员工所做的更改,您可以运行以下命令:

Changes changes = javers.findChanges(QueryBuilder.byClass(Employee.class).build())

println changes.prettyPrint()
© www.soinside.com 2019 - 2024. All rights reserved.