a HashSet
(поддерживается HashMap
) работает, если хеш-коды объектов не меняются. Это потому, что он держит их на основе их хеш-кодов.
Таким образом, если вы основываете hashCode()
на идентификаторе и помещаете сущности без идентификатора, все они будут иметь одинаковый хеш-код. Который, если они также equal(..)
(какими они будут), не позволит использовать более одного объекта в наборе.
Теперь, если в наборе есть несколько сущностей с присвоенным идентификатором и одна без, которая впоследствии сохраняется, тогда для множества будет неправильный хеш-код.
Также проверьте этот вопрос , какие варианты вы можете выбрать hashCode()
и equals(..)