2016-10-12 2 views
0

у меня есть два объекта из базы данных (в базе данных это то же объект), но они имеют разные хэш:Java. Одни и те же объекты с различными хэш

GroupType groupType = groupTypeDao.findById(3); 
GroupType groupType1 = groupTypeDao.findById(3); 
System.out.println(groupType); 
System.out.println(groupType1); 

я получаю этот выход:

[email protected] 
[email protected] 

Почему что? Технологический стек: Spring, JavaFX, Hibernate.

У меня есть другой проект с весной и спящим. Файлы конфигурации идентичны в двух проектах. Версия Hibernate также идентична. Но в другом проекте это создает одинаковые хэш-коды.

+0

Это не 'HashCodes' ... – brso05

+0

Do:' groupType.hashCode() 'и' groupType1.hashCode() 'и посмотреть, что получится ... – brso05

+1

Таковы' значения toString' которые по умолчанию 'hashCode()' ... Который вы, вероятно, не реализовали. –

ответ

4

Вы напечатали ссылки на объекты. Они действительно разные, если вы создали каждую ссылку, вызвав новую.

Вам необходимо переопределить значения equals, hashCode и toString в соответствии с «Эффективной Java», чтобы получить нужное поведение.

0

System.out.println(groupType) обычно вызывает toString() метод на java.lang.Object и это печатает:.

GetClass() GetName() + '@' + Integer.toHexString (хэш-код())

Теперь hashCode() может быть немного вводит в заблуждение, потому что, если он не будет перезаписана тогда ...

метод хэш-код определяется классом объекта делает обратный ди целые целые числа для отдельных объектов.

Котировки от java.lang.Object документация.

Смежные вопросы