检查用户对象是否存在于@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
我正在使用 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