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



我正在使用MongoDB,Spring Data和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,我会清楚地看到联系人插入到用户列表中。

我注意到,如果我打印联系人对象的哈希代码和列表中的对象,我会得到一个不同的值,所以我假设即使细节相同,对象本身也不是。

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

否则:如何检查联系人列表中是否存在对象?

您应该重写用户中的 equals 方法。

来自JavaDoc:

布尔包含(对象 o)

如果此列表包含指定的元素,则返回 true。更多 正式地,当且仅当此列表包含至少一个时,返回 true 元素 e 使得 (o==null ? e==null : o.equals(e))。

使用等于,您必须覆盖和哈希代码

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

相关内容

  • 没有找到相关文章

最新更新