Jointure entre deux tables
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:
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:
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:
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 :
Code:
private Perphy PERPHY;