Ну потому что hash можно предопределить вручную... Можете получить сайдэфект.
Лучше сделать final поле в абстрактном классе модели которое нужно определять вручную в имплементации модели (если его не определили записать туда hashcode). Тогда будет меньше возможности получить сайдэфект.