我阻止使用JaVers审核复杂对象的更改。 我需要跟踪SiteDto对象,它是复杂的对象。我的实现设计如下: 我有一个名为site的实体类:
@Entity
Site
@Id Id: Int(PK)
user: String
reason: String
siteDto: SiteDto
我有两项服务:
Service1:此服务将SiteD发送到service2。我们从service2获得的结构是:
@ValueObject
SiteDto
name: String
code: String
address: String
nodes: List<NodeDto>
@ValueObject
NodeDto:
name: String
code: String
modules: Set<ModuleDto>
devices: Set<DeviceDto>
@ValueObject
ModuleDto:
name: String
code: String
configMap: Map<String, String>
@ValueObject
DeviceDto:
name: String
code: String
ports: Set<PortDto>
@ValueObject
PortDto:
name: String
code: String
configMap: Map<String, String>
Service2:-此服务执行以下操作以跟踪差异。
从Service1接收SiteDto
将SiteD转换为具有Set到List的嵌套对象,我正在转换,因为Set确实显示了不提供更改内容的哈希值。结构如下。
@ValueObject
SiteDto
name: String
code: String
address: String
nodes: List<NodeDto>
@ValueObject
NodeDto:
name: String
code: String
modules: List<ModuleDto>
devices: List<DeviceDto>
@ValueObject
ModuleDto:
name: String
code: String
configMap: Map<String, String>
@ValueObject
DeviceDto:
name: String
code: String
ports: List<PortDto>
@ValueObject
PortDto:
name: String
code: String
configMap: Map<String, String>
我被下列问题所困扰。您能提出解决这些问题的方法吗?
当我在嵌套列表中添加新的ModuleDto或DeviceDto或PortDto时,JaVers没有给出正确的差异,因为我执行字母数字顺序。
当我从嵌套列表中删除旧的ModuleDto,DeviceDto,PortDto时,JaVers没有给出正确的差异,因为当我执行字母数字顺序时索引会更改。