Hibernate中的HashSet

时间:2017-08-24 07:43:24

标签: hibernate collections

我有两个POJO类地址和user_details。 我需要知道代码如何运行

 @ElementCollection
    private Set<Address>listOfAddresses = new HashSet();
    public Set<Address> getListOfAddresses() {
        return listOfAddresses;
    }
    public void setListOfAddresses(Set<Address> listOfAddresses) {
        this.listOfAddresses = listOfAddresses;
    }

我在main方法中实现了

Address addr2 = new Address();
        addr2.setStreet("Second Street");
        addr2.setCity("Second City");
        addr2.setState("Second State");
        addr2.setPincode("20002");

user.getListOfAddresses().add(addr2);

1 个答案:

答案 0 :(得分:0)

不幸的答案是&#34;它取决于&#34;。 HashSet将对您放入其中的任何对象使用hashcode()函数。由于我们没有您的Address类的代码,我们无法真正了解您的对象如何实现此方法。

一般来说,大多数IDE提供的方法允许您自动生成hashcode()的合理实现。请记住,您还应该为覆盖hashcode()的任何对象重写equals(Object o)。

hashcode()和equals()具有所谓的&#34;合同&#34;。当两个对象相等时,它们的hashcode()方法应该返回相同的数字。相反的情况不一定是真的。

如果你为Address正确实现了这个,那么HashSet应该只是过滤掉重复的对象(如预期的那样)。