是否可以找到引用另一个实体的实体的更改?

时间:2019-06-08 17:17:46

标签: javers

我有一个Project实体,许多其他类型的实体(例如,房屋和街道)都引用了该实体。在Javers中,可以构造一个查询来查找属于某个项目的所有实体的更改,即引用该项目实体吗?

class Project {
    @Id Long id;
}

class House {
    @Id Long id;
    Project project;
    String name;
}

class Street {
    @Id Long id;
    Project project;
    String name;
}

3 个答案:

答案 0 :(得分:0)

不,Javers不是关系数据库,实体之间没有联接。您所要做的就是更改映射,并将房屋和街道映射为值对象。如果是这样,它们将成为项目实体的一部分,并且可以使用项目ID进行查询。

答案 1 :(得分:0)

commit-property-filter的约束是,每次您提交对实体的更改都属于Project时,请在commit属性中提供项目ID和相应的名称(例如:projectId,1)。

如果您将Javers与SpringBoot结合使用并通过JaversSpringDataJpaAuditableRepositoryAspect跟踪更改,那么这里是Is there possibility to provide object dependent map for CommitPropertiesProvider?的提示

答案 2 :(得分:0)

我的解决方案是始终对外部实体进行更改(在您的情况下为HouseStreet)。这样,即使只是Project发生了更改,JaVers仍会忠实地记录新快照。

为了最小化“总是但虚假的更改”的存储影响,我在外部实体上创建了一个int f字段,并在01之间切换。使用0,它甚至不属于JSON快照数据。为了弄清楚应该是哪一个,我读了最后一个快照并在那里获取了旧值。另一种方法是始终在此处创建一个随机数。这样做会在JSON中使用更多的空间,但是它将使您免于数据库查询以检索上一个快照。