Встречается на собеседованиях • сегодня
Что будет, если использовать в качестве ключа в HashMap Entity из Hibernate и не переопределять у него equals и hashCode
Если использовать Entity из Hibernate в качестве ключа в HashMap без переопределения equals и hashCode, будут использованы стандартные реализации из Object. Это приведет к проблемам:
- Некорректное сравнение – стандартный
equalsсравнивает ссылки, а не содержимое объектов. Даже две сущности с одинаковыми полями будут считаться разными ключами.
- Нестабильность хеш-кода – стандартный
hashCodeзависит от адреса в памяти. При изменении состояния сущности (например, после загрузки из БД) хеш-код изменится, и ключ станет недоступен вHashMap.
Пример:
java
@Entity
public class User {
@Id
private Long id;
private String name;
// нет equals/hashCode
}
User user1 = new User(1L, "Alice");
map.put(user1, "value");
// После изменений или повторной загрузке:
user1.setName("Bob"); // hashCode изменился!
map.get(user1); // вернет null - ключ "потерялся"Решение: всегда переопределяйте equals и hashCode для сущностей, используя неизменяемые поля (обычно ID).

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы