【发布时间】:2019-09-20 05:41:55
【问题描述】:
我有 2 个休眠实体的列表。
我需要比较它们。当我使用 equals() 时,它总是给出 false,因为它的引用不同。
E1.equals(E2)
【问题讨论】:
标签: java list hibernate jpa java-8
我有 2 个休眠实体的列表。
我需要比较它们。当我使用 equals() 时,它总是给出 false,因为它的引用不同。
E1.equals(E2)
【问题讨论】:
标签: java list hibernate jpa java-8
这是因为您仅在评估相等性时才引用 List 对象。您必须遍历集合进行检查(假设顺序很重要):
E1.size() == E2.size() && IntStream.range(0, E1.size())
.allMatch(index -> E1.get(index).equals(E2.get(index)));
P.S.1:变量名在java中是小写的。
P.S.2:确保正确定义 equals 和 hashCode。默认情况下,同一实体在不同状态(托管、分离)中不相等。
【讨论】: