Почему объект не может классифицировать в JPA быть окончательным или иметь последние методы? Цитирование отсюда -
Класс объекта должен следовать за этими требованиями:
...
Класс не должен быть объявлен
final
. Никакие методы или персистентные переменные экземпляра не должны быть объявленыfinal
.
Какова причина? JPA разделяет классы объекта на подклассы и переопределяет методы?
По определению, сущность - это класс, который может быть сохранен в базе данных, поэтому наличие последнего поля не имеет смысла в контексте чего-то, что в конечном итоге станет записью в вашей базе данных. Требование отсутствия конечного класса и конечных методов связано с тем, как реализации JPA действительно работают с сохраняющимися экземплярами классов сущностей.
Обычно реализации создают подклассы вашего класса во время выполнения и / или динамически добавляют байтовый код к вашим классам, чтобы обнаружить, когда произошло изменение объекта сущности. Если ваш класс объявлен как final, это будет невозможно.
Конечно, причин гораздо больше, чем только они. Вот статья , которая дает больше информации о том, как ORM в целом работает за обложкой, которая может помочь вам лучше понять другие требования для JPA. сущности.