Java, Hibernate аннотации, Как добавить методы в объект POJO? - PullRequest
7 голосов
/ 11 июня 2010

Я использую спящие аннотации. Как добавить методы в объект POJO? Например, у меня есть метод "getChildNodes", связанный с базой данных, но я также хочу добавить рекурсивный метод "getAllChildNodes". Я получаю исключение "org.hibernate.PropertyNotFoundException: не удается найти установщик для прогресса свойства в классе", когда я делаю это.

Ответы [ 3 ]

9 голосов
/ 11 июня 2010

Если я интерпретирую это как «как добавить метод, который НЕ связан с постоянством», тогда вам нужно использовать аннотацию @Transient для метода getAllChildNodes()

1 голос
/ 13 июня 2010

Есть два способа определения структуры вашей сущности.

  • с использованием аннотаций к переменным экземпляра вашей сущности или
  • с использованием аннотаций к методам получения вашей сущности

При использовании аннотаций к методам полученияHibernate предполагает, что каждый getXxx (и isXxx для логических типов) представляет определение постоянного свойства.И это справедливо даже в том случае, если этот конкретный метод получения не содержит каких-либо аннотаций, как это происходит в вашем случае.

Hibernate также ожидает найти соответствующий метод установки для каждого постоянного свойства.И в вашем случае это то, что отсутствует и вызывает исключение.

Вы можете решить эту проблему, объявив свой пользовательский получатель как @Transient, который говорит, что этот получатель не представляет постоянное свойство.Другой способ - преобразовать сущность для использования аннотаций в переменных экземпляра.Последнее будет моим личным выбором.

0 голосов
/ 11 июня 2010

Откройте файл .java и напишите метод с именем getAllChildNodes().

Hibernate не пишет код для вас, он сопоставляет поля в вашей базе данных с вашим кодом. Это все. Если вы хотите иметь дополнительную логику в классах вашего домена / модели помимо обычных методов получения и установки для ваших свойств, вам придется добавить их самостоятельно.

...