spring boot - mongodb - DBRef Hashset接受重复项

时间:2018-01-28 04:29:16

标签: spring mongodb spring-boot

我有一个带有一组收藏项目的用户实体。我按如下方式注释该字段

void *a=malloc(size); // a references heap mem allocation
void *b=a; // b references heap mem allocation
free(a);   // heap mem allocation freed
free(b);   // error: heap mem allocation already freed

当我想在集合中添加新项目时,我从数据库中获取用户,获取他的收藏夹插入新项目并保存用户。添加和删​​除项目我使用Set接口的添加和删除功能。

问题:该集接受重复,并且删除函数不会从集合

中删除

编辑:以下是我在集合中添加项目的方法:

class user {
    @Id 
    private String id;
    @DBREF
    private HashSet <Item> favorites;
    //empty and full constructor + getters and setters
}

1 个答案:

答案 0 :(得分:0)

为了将来参考,我必须正确实现类Item的equals函数:

@Override
    public boolean equals(Object o) {

        if (o == this) return true;
        if (!(o instanceof Item)) {
            return false;
        }
        Item item = (Item) o;

        // wrong (for comparing Strings): return id == item.getId()

        // right:
        return id.equals(item.getId());
    }

    @Override
    public int hashCode() {
        return Objects.hash(id);
    }