Ich verwende Hibernate-Annotationen. Wie füge ich Methoden zum POJO-Objekt hinzu? Zum Beispiel habe ich "getChildNodes" -Methode, die mit der Datenbank verknüpft ist, aber ich möchte auch die rekursive Methode "getAllChildNodes" hinzufügen. Ich bekomme "org.hibernate.PropertyNotFoundException: Konnte keinen Setter für den Fortschritt der Eigenschaft in der Klasse" finden, wenn ich es tue.Java, Hibernate-Annotationen, Methoden zum POJO-Objekt hinzufügen?
Antwort
Wenn ich interpretieren dies als „Wie füge ich eine Methode, die nicht auf Ausdauer verwandt ist“, dann müssen Sie die @Transient
Anmerkung auf der getAllChildNodes()
Methode verwenden
Ich bin verwirrt. Fügen Sie keine zusätzlichen Funktionen wie getAllChildNodes() oder publish() hinzu, um es zum Beispiel nicht mehr zu einem POJO zu machen? Und verstößt damit gegen ein Design-Prinzip von Hibernate-Objekten, die POJOs sein müssen und daher "schlecht" sind? Aber warum wäre es schlecht? Ich möchte das tun, aber ich bin mir nicht sicher, ob es der richtige Weg ist. – pete
Öffnen Sie die .java-Datei und schreiben Sie eine Methode namens getAllChildNodes()
.
Hibernate schreibt keinen Code für Sie, er ordnet Felder in Ihrer Datenbank Ihrem Code zu. Das ist alles. Wenn Sie neben den normalen Gettern und Settern für Ihre Eigenschaften zusätzliche Logik in Ihren Domänen-/Modellklassen haben möchten, müssen Sie sie selbst hinzufügen.
Es gibt zwei Möglichkeiten, die Struktur Ihres Unternehmens definieren .
- mit Anmerkungen auf den Instanzvariablen Ihres Unternehmens oder
- Anmerkungen auf den Getter-Methoden Ihres Unternehmens mit
Wenn auf Getter-Methoden die Anmerkungen verwenden, wird davon ausgegangen Hibernate, dass jeder getXXX (und isXxx für boolesche Typen) repräsentiert die Definition einer persistenten Eigenschaft. Und dies gilt auch dann, wenn der betreffende Getter keine Anmerkungen enthält, wie es in Ihrem Fall der Fall ist.
Hibernate erwartet außerdem, für jede persistente Eigenschaft eine passende Setter-Methode zu finden. Und in Ihrem Fall ist das was fehlt und verursacht die Ausnahme.
Sie können dieses Problem lösen, indem Sie Ihren benutzerdefinierten Getter als @Transient
deklarieren, der besagt, dass dieser Getter keine dauerhafte Eigenschaft darstellt. Ein anderer Weg wäre, die Entität zu konvertieren, um Annotationen für die Instanzvariablen zu verwenden. Letzteres wäre meine persönliche Entscheidung.
- 1. Fehler in Java beim Hinzufügen von Methoden
- 2. Hinzufügen von Benutzerelemente mehrdimensionales Array mit Methoden Java
- 3. Ärger benutzerdefinierte Methoden Hinzufügen jap Repositories zum Frühling
- 4. Die beste Methode zum Hinzufügen von Anmerkungen zu geerbten Methoden
- 5. Hinzufügen von Methoden in Sammlungen
- 6. Java Rechner Zahlen zum Textfeld hinzufügen
- 7. Java/Swing: Hinzufügen von Elementen zum Systemmenü
- 8. Java Interface Methoden Verwendung
- 9. NSMutableArray neue Methoden hinzufügen
- 10. java, erhalten set-Methoden
- 11. Ändern einer serialisierbaren Klasse durch Hinzufügen von statischen Methoden, Java
- 12. Hinzufügen von Java-Klasse-Methoden in einen neuen Thread
- 13. Verhindern, dass Unterklassen Methoden hinzufügen
- 14. Java - Generische statische Methoden
- 15. Java Annotation zum Erzwingen von statischen Variablen oder statischen Methoden?
- 16. Verwenden von JRuby zum direkten Anrufen von Android-Java-Methoden
- 17. Linq Methoden hinzufügen vs gespeicherte Prozedur hinzufügen
- 18. Sind native Java-Methoden äquivalent zu statischen Java-Methoden?
- 19. Hinzufügen zum Repository hinzufügen
- 20. Java - Virtuelle Methoden
- 21. Java-Callback-Methoden
- 22. Java neu definierte Methoden
- 23. Java: `static` Methoden
- 24. Java generische Methoden verstehen
- 25. Java Größenanpassung Methoden
- 26. Enum-Methoden ausblenden Java
- 27. Frage zu Java-Methoden
- 28. Java implizite Methoden/Parameter?
- 29. Array von Set-Methoden - Java
- 30. Wie instrumentiere ich Java-Methoden?
zeigen Sie Ihren Code. – Bozho