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