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 :
Alors, en Java, je code ceci :
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%'
Malheureusement, j'ai une exception :
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));
Je comprends bien que ACTIF n'appartienne pas à la table DENOMPHY... Comment pourrais-je solutionner ce problème ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 org.hibernate.QueryException: could not resolve property: ACTIF of: metier.Denomphy
Merci par avance pour votre aide.
Note : la classe Denomphy.java contient l'attribut PERPHY :
Code : Sélectionner tout - Visualiser dans une fenêtre à part private Perphy PERPHY;
Partager