Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Javers值更改比较不起作用_Java_Javers - Fatal编程技术网

Java Javers值更改比较不起作用

Java Javers值更改比较不起作用,java,javers,Java,Javers,我是Javers的新手,并在我的项目中实施了它。与让我们做噩梦的物体的区别 Javers版本2.9.2./Java 7 我正在做的是: 第一步:从数据库中获取XML。 第二步:使用 JAXB和转换为Java TOTransfer对象。 用于转换为对象的XML为: 第1版XML: <fTO> <fId>10519</fId> <removed for brevity/> <subList>

我是Javers的新手,并在我的项目中实施了它。与让我们做噩梦的物体的区别

Javers版本2.9.2./Java 7 我正在做的是:

第一步:从数据库中获取XML。 第二步:使用 JAXB和转换为Java TOTransfer对象。 用于转换为对象的XML为: 第1版XML:

    <fTO>
    <fId>10519</fId>
    <removed for brevity/>
    <subList>
        <subList>
            <fId>10528</fId>
            <removed for brevity/>
        </subList>
        <subList>
            <fId>10527</fId>
            <removed for brevity/>
        </subList>
        <subList>
            <fId>10520</fId>
            <removed for brevity/>
        </subList>
    </subList>
</fTO>
<fTO>
        <fId>10519</fId>
        <removed for brevity/>
        <subList>
            <subList>
                <fId>10527</fId>
                <removed for brevity/>
            </subList>
            <subList>
                <fId>10520</fId>
                <removed for brevity/>
            </subList>
        </subList>
    </fTO>
或者

我得到的结果是:

1. NewObject{globalId:'<className>.FTO/#subList/2'}
2. ValueChange{globalId:'<className>.FTO/#subList/1', property:'fId', oldVal:'10520', newVal:'10527'}
3. ValueChange{globalId:'<className>.FTO/#subList/0', property:'fId', oldVal:'10527', newVal:'10528'}
4. ListChange{globalId:'<className>.FTO/', property:'subList', containerChanges:[(2).added:'<className>.FTO/@1f']}
4.<removed other for brevity.>
现在它正在正确地获取新对象,但将10520与10527进行比较 10527和10528.10528是我的新目标,不过,仍在比较 虽然根据贾维尔和我的要求,它必须比较10527和10527 我试着做我从谷歌搜索得到的所有事情,但没有任何改变

同样使用此测试,结果相同:

            List<FTO> FL1 = (List<FTO>) ((FTO)o1).getSubList();
            List<FTO> FL2 = (List<FTO>) ((FTO)o2).getSubList();
            Diff diff1 = javers.compareCollections(FL1, FL2, FTO.class);
我也尝试过实现自定义比较器,但没有成功。 帮我,贾维斯·马斯特斯先生

编辑:添加Java类

@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class FTO {

@XmlElement
private Integer fId;

@XmlElementWrapper
@XmlElement
private List<FTO> subList = new ArrayList<FTO>();

//<Removed for brevity>

@XmlElement
private String fIdStr;

public String getFIdStr() {
    return fIdStr;
}
public void setFIdStr(String fIdStr) {
    this.fgIdStr = fgIdStr;
}
public Integer getFId() {
    return fId;
}
public void setFId(Integer fId) {
    this.fId = fId;
    if(null != fId){
        setFIdStr(fId.toString());
    }
}
public List<FTO> getSubList() {
    return subList;
}
public void setSubList(List<FTO> subList) {
    this.subList = subList;
}

//<Removed for brevity>
}
你可以用

    Javers javers = JaversBuilder.javers()
        .withListCompareAlgorithm(ListCompareAlgorithm.AS_SET)
        .build();
用@IdJavers id标记字段'fid',然后将根据列表中未按顺序排列的id对对象进行比较


另外,有关更多信息,请参阅文档

Javers比较Java对象,因此XML是不相关的。我可以试着帮你,但是你需要展示你传递给眼睛的对象的类别,巴特克,你是对的。此xml仅用于从数据库获取数据,并使用jaxb设置要比较的java对象。我将尝试向您展示java对象。嗨,Bartek,我自己比较了内部对象。尽管这可能不是一个最佳实践。
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class FTO {

@XmlElement
private Integer fId;

@XmlElementWrapper
@XmlElement
private List<FTO> subList = new ArrayList<FTO>();

//<Removed for brevity>

@XmlElement
private String fIdStr;

public String getFIdStr() {
    return fIdStr;
}
public void setFIdStr(String fIdStr) {
    this.fgIdStr = fgIdStr;
}
public Integer getFId() {
    return fId;
}
public void setFId(Integer fId) {
    this.fId = fId;
    if(null != fId){
        setFIdStr(fId.toString());
    }
}
public List<FTO> getSubList() {
    return subList;
}
public void setSubList(List<FTO> subList) {
    this.subList = subList;
}

//<Removed for brevity>
}
    Javers javers = JaversBuilder.javers()
        .withListCompareAlgorithm(ListCompareAlgorithm.AS_SET)
        .build();