如何使我的代码向SET中添加相同的对象?我想我将不得不对hashcode()或equal()函数做些事情。
Class Order {
private id;
private Set<Discount>;
}
Class Discount {
private id;
private Long amount;
}
现在,如果我尝试保存两个每个$ 1的折扣,则SET仅显示一个折扣。休眠保存后,折扣将具有不同的ID,但与现在相同。不想更改Order类的定义,因为这是一个大项目,并且更改将是无止境的
最佳答案
根据JavaDoc for the Set interface,一个集合不允许包含重复的相同元素(由equals和hashcode定义)。虽然当休眠保存折扣时这可以很好地工作(因为您说的id会有所不同),但是这些id现在是相同的,因此,如果不做将来会卡住的人的事情,那么您要完成的工作就不可能实现您的代码会讨厌您。
由于您不希望更改Order类,因此最好的办法是将折扣的ID追溯更改为唯一的ID。