AFAIK Lombok «работает» (т.е. генерирует методы и т. Д.) Только на этапе компиляции. Все его аннотации имеют политику хранения «ИСТОЧНИК». После того, как lombok завершит генерацию метода, во время выполнения будет невозможно «различить» нативные методы от методов, сгенерированных lombok.
С другой стороны, другие аннотации (здесь JPA, JAXB) обрабатываются во время выполнения, поэтому они не будут мешать или что-то в этом роде.
Итак, я предполагаю, что если во время выполнения JVM жалуется, что метод не существует, его действительно нет.
Теперь, если во время выполнения метода нет, его, вероятно, действительно нет :)
На самом деле вопрос в том, не работал ли Lombok вообще или генерировал что-то, что JPA / Hibernate не распознает как допустимый метод.
Как это проверить?
Я предлагаю просто физически открыть ваш военный файл (опять же, я неявно предполагаю, что у вас есть файл WAR в tomcat), найдите HeroEntity.class
внутри WEB-INF/lib/one-of-your-jars.jar
и запустите его через какой-нибудь дизассемблер, например JAD или javap - просто чтобы увидеть, что генерируется.
Если вы видите, что есть какой-то метод получения, возможно, его тип возврата не соответствует ожиданиям Hibernate (Long против long и т. Д.)
В качестве альтернативы, если вообще нет геттера, то Lombok не работает, и вы должны проверить свою сборку
Я знаю, что это скорее предположение, а не точный и точный ответ, но похоже, что здесь недостаточно информации, не потому, что вопрос плохой или что-то в этом роде, а потому, что есть вероятность, что под капот вашего проекта, который может повлиять на ответ.