Bonjour,

Je possède deux tables : PERPHY et DENOMPHY. PERPHY a pour clé primaire IDITIP que DENOMPHY a pour clé étrangère, permettant une jointure entre les deux. La relation entre les deux est de type (1; 1+) , 1+ signifiant au moins une instance DENOMPHY pour une seule de PERPHY. Cela se traduit par une relation many-to-one dans la configuration du fichier Denomphy.hbm.xml.

Parmi les champs de PERPHY, il y a ACTIF et ETAT.

Parmi ceux de DENOMPHY, il y a IMG et NOM.

Je voudrais programmer avec Criteria la requête suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
SELECT * FROM PERPHY P, DENOMPHY D
WHERE
D.IDITIP = P.IDITIP AND
P.ACTIF = 1 AND
P.ETAT IN ('1', '2', '5') AND
D.IMG = 1 AND
D.NOM LIKE 'DEP%'
Alors, en Java, je code ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
	Criteria crit = session.createCriteria(Denomphy.class);
 
	crit.setFetchMode("Perphy", FetchMode.JOIN);
 
	crit.add(Expression.eq(Denomphy.C_IMG, "1"));
 
	crit.add(Expression.like(Denomphy.C_NOM, "DEP%"));
 
	crit.add(Expression.eq(Perphy.C_ACTIF, "1"));
 
	String tab_CDETAT[] = {"1", "2", "7"}; 
	crit.add(Expression.in(Perphy.C_ETAT, tab_CDETAT));
Malheureusement, j'ai une exception :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
org.hibernate.QueryException: could not resolve property: ACTIF of: metier.Denomphy
Je comprends bien que ACTIF n'appartienne pas à la table DENOMPHY... Comment pourrais-je solutionner ce problème ?

Merci par avance pour votre aide.



Note : la classe Denomphy.java contient l'attribut PERPHY :