我有一个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;
}
答案 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)
我的解决方案是始终对外部实体进行更改(在您的情况下为House
和Street
)。这样,即使只是Project
发生了更改,JaVers仍会忠实地记录新快照。
为了最小化“总是但虚假的更改”的存储影响,我在外部实体上创建了一个int f
字段,并在0
和1
之间切换。使用0
,它甚至不属于JSON快照数据。为了弄清楚应该是哪一个,我读了最后一个快照并在那里获取了旧值。另一种方法是始终在此处创建一个随机数。这样做会在JSON中使用更多的空间,但是它将使您免于数据库查询以检索上一个快照。