如何让我的代码将相同的对象添加到SET?我想我将不得不使用hashcode()或equal()函数。
Class Order {
private id;
private Set<Discount>;
}
Class Discount {
private id;
private Long amount;
}
现在如果我尝试保存每个1美元的两个折扣,SET只显示一个折扣。当hibernate保存它时,折扣会有不同的ID,但它们与现在相同。不想改变Order类的定义,因为它是一个大项目而且变化将是无止境的
答案 0 :(得分:1)
根据JavaDoc for the Set interface,不允许一个集合包含重复的相同元素(由equals和hashcode定义)。虽然这可以在hibernate保存折扣时工作正常(因为你说ids会有所不同),现在ids是一样的,所以你想要完成的事情是不可能的,如果不做那些将来会被困住的人你的代码会恨你。
由于您不希望更改Order类,因此您最好的办法是追溯性地将折扣上的ID更改为唯一。
答案 1 :(得分:0)
您不能将相同的对象添加到集合中,因为这是集合的要点。集合包含独特的元素。你最好使用列表或地图。