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