当前位置: 首页 > 知识库问答 >
问题:

比较javers中的两个列表

羊舌志
2023-03-14

我有一个关于列表比较器的问题。我有一个带有表格的网页应用程序。我可以在这个表格中编辑数据,也可以删除行。当我编辑数据时,标准比较器工作正常,但当我删除行时,我有问题。这个问题很常见(我想),当我删除一行时,javers比较旧列表和现在的列表时,看起来是这样的:旧列表有两个对象,现在列表有一个对象(我删除了第一个),现在javers不知道哪个对象被删除了,他比较旧列表中的第一个对象和新列表中的第二个对象,对他来说,整个对象都变了,这不是真的。

我的想法是,我将编写自己的列表比较器,在收集javers compare方法之前,在这个比较器中,我检查比较对象是否具有相同的ID。不幸的是,我在获取对象ID方面有问题。我的比较器如下所示

public class ListComperator implements CustomPropertyComparator {

public ValueChange compare(List list1, List list2, GlobalId globalId, Property property) {

    for (Object o1 : list1) {

        for (Object o2 : list2) {
            if(o1.getId().equals(o2.getId()) )  {
                javers.compare(o1, o2);
            }
        }

    }}}

第二个列表“list2”有我的对象,我可以从中获取任何属性,例如ID。第一个列表“list1”是带有一些ValueObjectId的列表,我不知道如何从对象o1获取具有ID的属性。有没有办法获取这些信息,或者我可能做错了什么,请帮忙。

共有1个答案

吴才俊
2023-03-14

我想您在这些列表中存储了ValueObjects?由于ValueObjects没有标识符,所以当列表发生更改时,无法检测它们如何在列表索引之间“移动”。如果没有识别对象的方法,自定义比较器将不会有多大帮助。我建议向存储在列表中的对象添加某种标识符,并将其映射为实体(使用@Id注释)。

 类似资料:
  • 我有两个表,分别是产品和采购: PRODUCTS表-将获得购买的所有新产品。这意味着表prroducts中不存在相同的productname。所有独特产品列表 采购表-具有唯一purchase_id的所有采购产品的列表。 > 如果要在PURCHASE中添加或插入值,表PRODUCTS将获得PURCHASE的所有值,但前提是PURCHASE中的productname不存在于PRODUCTS中的'pr

  • 我有两个列表,数据相同,但顺序不同。 结果:

  • 问题内容: 我有两个列表(不是Java列表,可以说两列) 例如 我想要一个返回多少个相同元素的方法。对于此示例,它应该为3,并且应该返回列表的相似值和不同的值。 如果是,我应该使用哈希图,然后用什么方法获得结果? 请帮忙 PS:这不是学校作业:)因此,如果您只是指导我就足够了 问题答案: 编辑 这是两个版本。一种使用,另一种使用 比较它们并从中创建您自己的版本,直到获得所需的内容。 这应该足以覆盖

  • 问题内容: 假设我有两个表,表A和表B,并且我想比较某个列。 例如, 表A包含以下列:IP,主机,应用 表B具有以下列:IP,数据中心,服务器,模型,最后更新 如何比较两个表之间的IP列以获取差异? 我知道表是否具有相同的列,我可以使用并集和“减号”来获取差异,但是我无法找出表具有不同列的方式。 谢谢! 问题答案: 这将输出两个表中不匹配行的所有列,并且在任一侧都有NULL。

  • 问题内容: 我有两个表,想要像这样在sqlite上比较行 我想产生这样的结果 sqlite中的语法如何?谢谢 问题答案:

  • 第一次来这里,所以我希望这是有意义的! 我有两个对象数组,比如l1和l2,我想在这两个列表之间进行比较,并在l3中得到一个不匹配的值。用户类包含2个字符串: 比如,l1包含:Java、JSF、JAXR、foo l2包含:JSF、JAXR 我可以对匹配的值进行比较,但不能对不匹配的值进行比较。这种逻辑似乎有缺陷。有什么帮助吗? 对于匹配值: 但是,对于不匹配,当我说不等于时,我得到的不是唯一的值,而