Вопрос касательно Hashcode и Equals и метода toString в сущностях - PullRequest
0 голосов
/ 27 апреля 2020

Я хочу знать правила, какие переменные экземпляра должны быть включены при переопределении хэш-кода и метода равных, когда мы работаем с сущностями, имеющими отношения один ко многим.

У этой сущности, где у пользователя много контактов, поэтому Класс контакта имеет переменную экземпляра User user. поэтому, когда я выбираю все поля при переопределении хэш-кода и метода equals, он говорит stackoverflowError в методе toString.

Ответы [ 2 ]

0 голосов
/ 27 апреля 2020

Вы получаете ошибку из-за двунаправленной ассоциации. Но что более важно, личность объекта не должна зависеть от связанных объектов. Ха sh код и равенство должны зависеть только от атрибута вашей сущности пользователя.

0 голосов
/ 27 апреля 2020

Ваша ошибка - logi c, так как, я полагаю, у вас двунаправленное отношение, и вы ссылаетесь на entity.equals/hashcode с обеих сторон ... поэтому выполняется бесконечный цикл.

Удалите вызов контракта equals / hashcode непосредственно на объекте либо на User.contact, либо на Contact.user равно / га sh реализация.

Это решит вашу проблему.

...