我有一份员工名单。当编辑此列表中的任何项目并且更改该项目的任何字段时,
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 也捕获任何列表元素中的更改,但它似乎不起作用
对
employee
内的属性所做的更改不会显示在 Company
对象下。您在 Javers 中看到的与 company.employees
属性相关的唯一更改是在列表中添加或删除员工。对 employee
本身的更改将作为员工的一部分进行审核。
要查看对员工所做的更改,您可以运行以下命令:
Changes changes = javers.findChanges(QueryBuilder.byClass(Employee.class).build())
println changes.prettyPrint()