0

В EclipseLink user guide указано, что при построении IdClass (не встроенного) для составного первичного ключа он должен иметь открытый конструктор без аргументов и реализовать методы equals и hashCode. Кроме того, пример, который он дает, также реализует геттеры и сеттеры.Каковы требования для IdClass в EclipseLink?

Persistence WikiBook имеет открытый конструктор с аргументами, не конструктор без аргументов, не добытчиками и сеттеров, и прямо говорится, что EclipseLink не требует осуществления equals и hashCode.

Какой из них действительно необходим? Могу ли я использовать минимальный IdClass только с атрибутами и без конструкторов и без методов, потому что EclipseLink будет генерировать их для меня? Это зависит от версии EclipseLink?

ответ

1

Требуется конструктор no-arg (который генерируется java, если у вас нет другого). Вы можете использовать только минимальный класс с атрибутами.

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

+0

Значит ли это, что если не указывать 'hashCode' и' equals', равенство первичных ключей по умолчанию соответствует идентификатору объекта? И поэтому, что по сути, включая эти методы, все еще необходимо с EclipseLink? – oulenz

+1

В принципе, да. И я предлагаю всегда указывать методы hashCode/equals', но он будет работать корректно даже без него в простых случаях использования (например, 'select * from ...' etc) –