2010-06-11 25 views
7

Używam adnotacji w trybie hibernacji. Jak dodać metody do obiektu POJO? Na przykład mam metodę "getChildNodes", powiązaną z bazą danych, ale chcę również dodać metodę rekurencyjną "getAllChildNodes". Otrzymuję "org.hibernate.PropertyNotFoundException: Nie można znaleźć programu ustawiającego dla postępu właściwości w klasie", gdy robię to.Adnotacje Java, Hibernate, Jak dodać metody do obiektu POJO?

+0

pokazać swój kod. – Bozho

Odpowiedz

9

Gdybym interpretują to jako „jak mogę dodać metodę, która nie jest związana z wytrwałości” to trzeba użyć @Transient adnotacji o sposobie getAllChildNodes()

+0

Jestem zdezorientowany. Czy dodanie dodatkowych funkcji, takich jak na przykład getAllChildNodes() lub publish(), nie czyni już POJO? I w związku z tym narusza zasadę projektowania obiektów hibernacji, które mają być POJO i dlatego jest "zły"? Ale dlaczego miałoby to być złe? Chcę to zrobić, ale nie jestem pewien, czy to właściwa droga. – pete

-1

Otwórz plik .java i wpisz metodę o nazwie getAllChildNodes().

Hibernate nie zapisuje kodu, odwzorowuje pola w bazie danych na kod. To wszystko. Jeśli chcesz mieć dodatkową logikę w swojej domenie/klasie modelu oprócz normalnych pobierających i ustawiających dla twoich właściwości, będziesz musiał dodać je sam.

1

Istnieją dwa sposoby definiowania struktury swojej jednostki .

  • wykorzystujące adnotacje dotyczące zmiennych instancji swojego podmiotu lub
  • wykorzystaniem adnotacji na getter swojego podmiotu

Podczas korzystania z adnotacji na getter, Hibernate zakłada, że ​​każdy getXXX (i isXxx dla typów boolean) reprezentuje definicję trwałej właściwości. I to się dzieje, nawet jeśli ten konkretny getter nie zawiera żadnych adnotacji, tak jak dzieje się to w twoim przypadku.

Hibernacja oczekuje również znalezienia pasującej metody setera dla każdej trwałej właściwości. W twoim przypadku to, czego brakuje, powoduje wyjątek.

Możesz rozwiązać ten problem, deklarując własny getter jako @Transient, który mówi, że ten wynik nie reprezentuje właściwości trwałej. Innym sposobem byłoby przekonwertowanie encji na adnotacje na zmiennych instancji. Ten drugi byłby moim osobistym wyborem.

Powiązane problemy