J'ai donc une table que j'ai définie comme une entité dans hibernate comme ceci: Lorsque j'ai essayé d'écrire une requête simple contre ce tableau: p> org.springframework.orm.hibernate3.HibernateQueryException: could not resolve property: dbgroupid of: com.common.server.domain.sec.Preference; nested exception is org.hibernate.QueryException: could not resolve property: dbgroupid of: com.common.server.domain.sec.Preference
3 Réponses :
Peut-être parce que vous avez qualifié le "dbgroupid", et non "dbgroupid"? p>
Est-ce parce que je l'ai déclaré sur la méthode GetXXX? Et c'est là que cela obtient la capitalisation?
Eh bien, j'ai fait des progrès à ce sujet, mais je ne comprends toujours pas où Hibernate obtient ses noms. J'ai débogué dans les tripes d'hibernate et j'ai trouvé la classe suivante: dans cette classe il y a une méthode: p> qui tente de résoudre le nom donné dans les critères contre l'objet. Donc, dans la carte typebypropertyPathathe, j'ai trouvé les valeurs suivantes: p> ici, vous pouvez voir que la capitalisation de DBGroupid ne correspondait pas à ce que j'avais dans mes critères. J'ai donc changé cela de dbgroupid à dbgroupid comme ceci: p> Ça fonctionne. p> p>
C'est probablement parce que votre getter (et votre setter) ne suit pas la convention JavaBeans. Il devrait être:
public long getDbgroupId() {
return dbgroupid;
}
@RRALPH - Oui, ce n'est pas interdit. Mais j'ai pris son nom de champ comme point de départ, alors j'ai suggéré un changement de getter. Cela aurait pu être l'inverse. Mais vous avez raison que plusieurs lettres majuscules au début sont difficiles.
Tu as raison - la manne est-elle comprise ta réponse - Est-ce que je supprimais mon commentaire déjà
J'ai eu un problème similaire où j'utilisais tous les majuscules et ne trouvais pas le bon getter: .add (restrictions.eq ("dbgroupid", dbgroupid)) code>
Au lieu de laisser votre IDE générer les getters and Setters, mieux utiliser Lombok