Java 使用JaVers审核复杂对象的更改

Java 使用JaVers审核复杂对象的更改,java,kotlin,javers,Java,Kotlin,Javers,我阻止了使用JaVers审核复杂对象的更改。 我需要跟踪SiteDto对象,这是一个复杂的对象。我的实现设计如下所述: 我有一个名为site的实体类: @Entity Site  @Id  Id: Int(PK)  user: String  reason: String  siteDto: SiteDto     我有两项服务: 服务1:此服务将SiteDto发送到服务2。我们从service2获得的结构是: @ValueObject SiteDto  name: String 

我阻止了使用JaVers审核复杂对象的更改。 我需要跟踪SiteDto对象,这是一个复杂的对象。我的实现设计如下所述: 我有一个名为site的实体类:

@Entity
Site 
@Id  Id: Int(PK)  
user: String  
reason: String  
siteDto: SiteDto    
我有两项服务:

服务1:此服务将SiteDto发送到服务2。我们从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>
@ValueObject
选址
名称:String
代码:字符串
地址:String
节点:列表
@估价对象
点头:
名称:String
代码:字符串
模块:设置
设备:设置
@估价对象
模数为:
名称:String
代码:字符串
配置映射:映射
@估价对象
设备收件人:
名称:String
代码:字符串
端口:设置
@估价对象
PortDto:
名称:String
代码:字符串
配置映射:映射
服务2:-此服务执行以下操作以跟踪差异

  • 从服务1接收SiteDto

  • 将SiteDto转换为已设置为List的嵌套对象,我正在转换,因为Set确实显示哈希值,而哈希值并没有给出更改的内容。结构如下

  • @ValueObject
    选址
    名称:String
    代码:字符串
    地址:String
    节点:列表
    @估价对象
    点头:
    名称:String
    代码:字符串
    模块:列表
    设备:列表
    @估价对象
    模数为:
    名称:String
    代码:字符串
    配置映射:映射
    @估价对象
    设备收件人:
    名称:字符串
    代码:字符串
    端口:列表
    @估价对象
    PortDto:
    名称:String
    代码:字符串
    配置映射:映射
    
  • 按字母数字顺序排列嵌套对象列表,并将SiteDto发送给JaVers,以便跟踪差异
  • 这是第一次,贾维尔不会给出结果,因为它将是初始类型。当我使用findChanges()进行查询时,它不会跟踪差异
  • 当我更新嵌套对象列表时,JaVers跟踪嵌套对象的更改。例如:我更新列表中的ModuleDto、DeviceDto或PortDto
  • 当我在嵌套列表中添加新的ModuleDto、DeviceDto或PortDto时,JaVers没有给出正确的差异,因为我使用字母数字顺序
  • 当我从嵌套列表中删除旧的ModuleDto、DeviceDto、PortDto时,JaVers并没有给出正确的差异,因为当我执行字母数字顺序时,索引会发生变化
  • 我被以下问题所阻碍。你能提出解决这些问题的方法吗

  • 当我在嵌套列表中添加新的ModuleDto、DeviceDto或PortDto时,JaVers没有给出正确的差异,因为我使用字母数字顺序

  • 当我从嵌套列表中删除旧的ModuleDto、DeviceDto、PortDto时,JaVers并没有给出正确的差异,因为当我执行字母数字顺序时,索引会发生更改

  • @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>