Java, Будьте в спящем режиме аннотации, Как добавить методы к объекту POJO?

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

7
задан RussianBear 11 June 2010 в 13:09
поделиться

3 ответа

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

9
ответ дан 7 December 2019 в 03:11
поделиться

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

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

-1
ответ дан 7 December 2019 в 03:11
поделиться

Существует два способа определения структуры сущности.

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

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

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

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

1
ответ дан 7 December 2019 в 03:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: