IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Hibernate Java Discussion :

hibernate.QueryException: could not resolve property


Sujet :

Hibernate Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 15
    Points : 19
    Points
    19
    Par défaut hibernate.QueryException: could not resolve property
    Bonjour à tous,

    J'ai une application struts qui utilise Hibernate.
    Dans ma DB (PostgreSQL) j'ai notament une table "Categorie" qui possède 3 champs :
    CATEGORIE (Primary key)
    NOM
    CATEGORIE_FK
    (Foreign key vers categorie.categorie)

    "CATEGORIE_FK sert a définir une catégorie mère dont elle serait issue.

    Niveau Hibernate, voici ma classe Categorie :
    package tfe.hibernate ;
    /**
    *
    *
    * @hibernate.class
    * table="CATEGORIE"
    *
    */
    public class Categorie {

    // <editor-fold defaultstate="collapsed" desc=" Property: String nom ">
    private String nom;
    /**
    * @hibernate.property
    * column="nom"
    * type="java.lang.String"
    * @hibernate.column
    * name="nom"
    * sql-type="VARCHAR(255) UNIQUE"
    * not-null="true"
    */
    public String getNom () {
    return nom;
    }
    public void setNom (String nom) {
    this.nom = nom;
    }
    // </editor-fold>

    // <editor-fold defaultstate="collapsed" desc=" PrimaryKey: int categorieid ">
    private int categorieid;
    /**
    *
    *
    * @hibernate.column name="Categorie"
    * not-null="true"
    * @hibernate.id generator-class="native"
    * column="Categorie"
    * type="int"
    */
    public int getCategorieid () {
    return categorieid;
    }
    public void setCategorieid (int categorieid) {
    this.categorieid = categorieid;
    }
    // </editor-fold>


    // <editor-fold defaultstate="collapsed" desc=" 1-N Relation to Collection /*tfe.hibernate.Categorie*/ souscategories ">
    private java.util.Collection souscategories;

    /**
    *
    *
    * @hibernate.collection-key column="CATEGORIE_FK"
    * @hibernate.collection-one-to-many class="tfe.hibernate.Categorie"
    * @hibernate.set role="souscategories"
    */
    public java.util.Collection getCategories() {
    return this.souscategories;
    }

    public void setCategories(java.util.Collection souscategories) {
    this.souscategories = souscategories;
    }
    // </editor-fold>

    }
    Lorsque j'exécute une sélection avec Criteria sans condition, ca fonctionne.
    Mais quand je veut avoir les catégories mères (donc celle qui ont un null dans le champs "Categorie_fk" j'obtiens un message d'erreur.
    Voici mon code pour la requête :
    try {
    /*création d'un object critéria avec paramètres de requête pour avoir uniquement les principales*/
    Criteria crit = session.createCriteria(Categorie.class);
    crit.add(Expression.eq("categorie_fk","null"));
    List list = crit.list();
    Iterator it = list.iterator();
    ArrayList categories = new ArrayList();

    while (it.hasNext()) {
    Categorie cat = (Categorie) it.next();
    String label = cat.getNom();
    String value = String.valueOf(cat.getCategorieid());
    categories.add(new LabelValueBean(label, value));
    }
    return categories;



    } catch ...
    J'ai essayé comme champs de recherche soit "souscategories" comme spécifié dans ma classe et "categorie_fk" comme spécifié dans ma DB, mais j'ai toujours la même erreur.

    Voici mon message d'erreur :
    exception
    javax.servlet.ServletException: could not resolve property: categorie_fk of: tfe.hibernate.Categorie
    org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:535)
    org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:433)
    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
    org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)
    cause mère
    org.hibernate.QueryException: could not resolve property: categorie_fk of: tfe.hibernate.Categorie
    org.hibernate.persister.entity.AbstractPropertyMapping.propertyException(AbstractPropertyMapping.java:44)
    org.hibernate.persister.entity.AbstractPropertyMapping.toType(AbstractPropertyMapping.java:38)
    org.hibernate.persister.entity.AbstractEntityPersister.getSubclassPropertyTableNumber(AbstractEntityPersister.java:1375)
    org.hibernate.persister.entity.BasicEntityPropertyMapping.toColumns(BasicEntityPropertyMapping.java:31)
    org.hibernate.persister.entity.AbstractEntityPersister.toColumns(AbstractEntityPersister.java:1350)
    org.hibernate.loader.criteria.CriteriaQueryTranslator.getColumns(CriteriaQueryTranslator.java:434)
    org.hibernate.loader.criteria.CriteriaQueryTranslator.getColumnsUsingProjection(CriteriaQueryTranslator.java:394)
    org.hibernate.criterion.SimpleExpression.toSqlString(SimpleExpression.java:45)
    org.hibernate.loader.criteria.CriteriaQueryTranslator.getWhereCondition(CriteriaQueryTranslator.java:334)
    org.hibernate.loader.criteria.CriteriaJoinWalker.<init>(CriteriaJoinWalker.java:82)
    org.hibernate.loader.criteria.CriteriaLoader.<init>(CriteriaLoader.java:67)
    org.hibernate.impl.SessionImpl.list(SessionImpl.java:1550)
    org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:283)
    tfe.Modele.getCategoriesPrincipales(Modele.java:140)
    tfe.PublicationAction.execute(PublicationAction.java:45)
    org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
    org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)
    Quelqu'un a t il déjà eu ce problème ?
    Comment puis je le corriger ?

    Merci de votre aide.

    Eric

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 74
    Points : 83
    Points
    83
    Par défaut
    Etrange cette requête.... l'erreur est normale car il n'existe pas de propriétés catégory_fk dans la classe Categorie ! tu fais l'amalgame malheureux entre propriété et colonne sur laquelle tu la mappes...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    crit.add(Expression.eq("categorie_fk","null"));
    essayes un truc du style:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    List session.createQuery("from Categorie c where size(c.souscategories) = 0").list
    Ca doit être un truc comme cela en HQL, tu dois pouvoir faire cela avec Criteria
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    crit.add(Expression.isEmpty("souscategories"));

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 15
    Points : 19
    Points
    19
    Par défaut hibernate.QueryException: could not resolve property
    Merci DenisJava,

    Mon problème provenait du fait que je réfléchissais toujours en modèle relationnel.
    J'ai lu la documentation d'hibernate et avec ta réponse, j'ai pu corriger mon erreur.

    Un grand merci
    Eric.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 20/10/2012, 10h06
  2. Réponses: 1
    Dernier message: 28/12/2010, 11h08
  3. [Liferay] exception: org.hibernate.QueryException: could not resolve property
    Par lamis2009 dans le forum Portails
    Réponses: 2
    Dernier message: 11/06/2010, 11h13
  4. [Hibernate] "could not resolve property" sur un tri
    Par Gorou dans le forum Hibernate
    Réponses: 1
    Dernier message: 13/07/2007, 12h27
  5. could not resolve property
    Par *alexandre* dans le forum Hibernate
    Réponses: 1
    Dernier message: 30/10/2006, 13h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo