首先,JaVers看起来是很棒的产品,因此感谢所有为此做出贡献的人。

但是在我的团队致力于此工作之前,我们很好奇它为将多个集合中的文档更改分组提供了哪些支持或模式。

想象一下以下领域模型:

class User {
    String username;
    List<String> roles;
}

class Role {
    String id;
    List<String> permissions;
}


为了同时获得特定用户和相关角色的更改日志,我可以想象一下这种“手动操作”策略:

UserEntity targetUser = null; // Assume valid user
Changes userChanges = javers.findChanges(byInstanceId(targetUser.getId(), UserEntity.class).build());

List<Changes> roleChanges = targetUser.getRoles().stream()
        .map(role -> javers.findChanges(byInstanceId(role.getContextId(), RoleEntity.class)
                .from(targetUser.getCreateTime())
                .build()))
        .collect(toList());

// Manually merge these two sets of changes.


这是我们所能做到的最好吗,还是有其他模式/挂钩可用于对模型之间的更改进行分组,尤其是那些在文档中包含“外来对象ID”的模型。

谢谢。

最佳答案

我建议这个模型:

class User {
    String username;
    List<Role> roles;
}

class Role {
    String id;
    List<String> permissions;
}


然后,您可以使用Shadow查询读取具有角色的用户。见https://javers.org/blog/2017/12/javers-vs-envers-comparision.html#reconstructing-full-object-graphs

10-07 13:24