检查用户对象是否存在于@DBRef List<User>

Check if User object exists in @DBRef List<User>

我正在使用 MongoDB、Spring 数据和 Spring MVC。 我有一个包含联系人列表的用户模型:

class User {
@DBRef
private List<User> contacts = new ArrayList<User>(); 

public List<User> getContacts() {
    return contacts;
}
}

我的数据库中目前有 4 个用户。 1 位用户有一个特定联系人(通过 ID 引用同一集合)。

现在,我想检查用户是否有特定联系人。我使用以下代码:

User userLoggedIn = userService.getLoggedInUser(); //user object
User contact = userService.findById(contactId); //contact
if(userLoggedIn.getContacts().contains(contact)) {
    System.out.println("Has this contact.");
}

未显示此输出消息。但是,如果我打印用户的联系人列表及其 ID,我会清楚地看到该联系人已插入到用户列表中。

我注意到如果我打印联系人对象的 hashCode 和列表中的 hashCode,我会得到不同的值,所以我假设即使细节相同,对象本身也不一样.

如何通过简单地检查他是否在列表中来解决这个问题。还是只按id比较?

另外说明:如何查看联系人列表中是否存在对象?

您应该覆盖 User 中的 equals 方法。

来自JavaDoc

boolean contains(Object o)

Returns true if this list contains the specified element. More formally, returns true if and only if this list contains at least one element e such that (o==null ? e==null : o.equals(e)).

使用equals你必须覆盖hashCode

http://docs.jboss.org/hibernate/core/4.0/manual/en-US/html/persistent-classes.html#persistent-classes-equalshashcode