J'utilise des annotations hibernées. Comment ajouter des méthodes à l'objet Pojo? Par exemple, j'ai une méthode "getChildNodes", associée à la base de données, mais je veux aussi ajouter une méthode récursive "getallchildNodes". Je reçois "Org.hibernate.PropertyNotFoundException: Impossible de trouver un constat de progrès de la propriété dans la classe" Exception lorsque je le fais. P>
3 Réponses :
Ouvrez le fichier .java et écrivez une méthode nommée Hibernate n'écrire pas le code pour vous, il mesure les champs de votre base de données à votre code. C'est tout. Si vous souhaitez avoir une logique supplémentaire dans vos classes de domaine / modèle Outre les getters et les Setters normaux de vos propriétés, vous devrez les ajouter vous-même. p> getallchildNodes () code>. p>
Si j'interprète cela comme "Comment puis-je ajouter une méthode qui n'est pas liée à la persistance" alors vous devez utiliser l'annotation @Transient code> sur le
getallChildNodes () code> Méthode P>
Je suis confus. L'ajout d'une fonctionnalité supplémentaire telle que GetallChildNodes () ou Publier () par exemple, ce n'est plus un pojo? Et viole donc un principe de conception d'objets hibernés devant être pojo et est donc "mauvais"? Mais pourquoi serait-il mauvais? Je veux faire ça, mais je ne suis pas sûr si c'est la bonne façon.
Il existe deux façons de définir la structure de votre entité. p>
Lorsque vous utilisez les annotations sur les méthodes Getter, Hibernate suppose que chaque GetXXX (et ISXXX pour Boolean Types) représente la définition d'une propriété persistante. Et cela tient même si ce getter particulier ne contient aucune annotation, comme cela se produit dans votre cas. P>
Hibernate s'attend également à trouver une méthode de setter correspondante pour chaque propriété persistante. Et dans votre cas c'est ce qui manque et provoque l'exception. P>
Vous pouvez résoudre ce problème en déclarant votre getter personnalisé comme @Transient code> indiquant que ce getter ne représente pas une propriété persistante. Une autre façon serait de convertir l'entité pour utiliser des annotations sur les variables d'instance. Ce dernier serait mon choix personnel. P>