Hibernate, Spring : findByCriteria => org.hibernate.QueryException : could not resolve property
bonjour,
J'ai défini une classe Interventions qui a une relation many-to-one avec une classe Configuration et une seconde avec une classe Equipe. La classe Configuration a quant à elle une relation many-to-one avec une classe Periode.
Voici le descriptif de mes classes:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
Class Interventions {
Configuration configuration;
Equipe equipe;
...
}
Class Configuration {
Periode periode;
...
}
Class Equipe {
String codeEquipe;
...
}
Class Periode {
int mois;
int annee;
...
} |
Tous les accesseurs et les mutateurs de mes classes apparaissent comme bien définis.
Je souhaiterais récupérer les objets Interventions associés à une période donnée et à une equipe donnée
j'ai défini une requête ainsi :
Code:
1 2 3 4 5 6 7
|
DetachedCriteria criteria = DetachedCriteria.forClass(Interventions.class)
.setFetchMode("equipe”,FetchMode.JOIN)
.setFetchMode("configuration”,FetchMode.JOIN)
.setFetchMode("configuration.periode”,FetchMode.JOIN)
.add(Restrictions.eq("equipe", monEqu))
.add(Restrictions.eq("configuration.periode", maPeriode)); |
Je récupère le résultat de mon résultat dans un itérateur:
Code:
1 2
|
Iterator monResultat = getHibernateTemplate().findByCriteria(criteria).iterator(); |
A l'exécution de mon code, j'obtiens l'erreur suivante:
org.hibernate.QueryException : could not resolve property : configuration.periode
Est-ce que ma requete est mal ecrite?
PS : Le mapping de mes classes est le suivant:
fichier Interventions.hbm.xml:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
|
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="monprojet.bean"
default-lazy="true"
default-cascade="none">
<class optimistic-lock="version" table="INTERVENTION_INTV" name="Interventions">
<id unsaved-value="null"
name="id"
type="java.lang.Long"
column="intv_ID">
<generator class="native">
<param name="sequence">intv_ID_SEQUENCE</param>
</generator>
</id>
<version column="VERSION" generated="never" name="version" type="integer"/>
<property column="VALEUR1" generated="never" lazy="false"
name="nbJoursAgents" type="java.math.BigDecimal"/>
<property column="VALEUR2" generated="never" lazy="false"
name="nbJoursIntervention" type="java.math.BigDecimal"/>
<property column="VALEUR3" generated="never" lazy="false"
name="nbTotalInterventions" type="java.math.BigDecimal"/>
<property column="VALEUR4" generated="never" lazy="false"
name="delaiMoyenIntervention" type="java.math.BigDecimal"/>
<property column="VALEUR5" generated="never" lazy="false"
name="tpsTransportTotalJours" type="java.math.BigDecimal"/>
<many-to-one class="Equipe" column="Equipe_ID" foreign-key="FK_INTV_Equipe"
name="Equipe" not-null="true"/>
<many-to-one name="configuration" class="monprojet.bean.Configuration" foreign-key="FK_INTV_CONF" lazy="false">
<column name="CONF_ID" not-null="true"/>
</many-to-one>
</class>
</hibernate-mapping> |
fichier Configuration.hbm.xml:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="monprojet.bean">
<class name="Configuration" table="CONFIGURATION_CONF">
<id column="CONF_ID" name="id" type="java.lang.Long">
<generator class="native">
<param name="sequence">CONF_ID_SEQUENCE</param>
</generator>
</id>
<natural-id mutable="true">
<property column="UIDUTILISATEUR" generated="never" lazy="false"
name="uidUtilisateur" type="java.lang.String"/>
</natural-id>
<version column="VERSION" generated="never" name="version" type="integer"/>
<property column="DATESAISIE" generated="never" lazy="false"
name="dateSaisie" type="java.util.Calendar"/>
<many-to-one column="CSI_ID" class="Csi" name="csi" not-null="true" foreign-key="FK_CONF_CSI" />
<many-to-one name="periode" class="Periode" foreign-key="FK_CONF_PERIODE" lazy="false">
<column name="PERI_ID" not-null="true"/>
</many-to-one>
</class>
</hibernate-mapping> |
fichier Equipe.hbm.xml:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="monprojet.bean"
default-lazy="true"
default-cascade="none">
<class optimistic-lock="version" table="Equipe_Equipe" name="Equipe">
<id unsaved-value="null"
name="id"
type="java.lang.Long"
column="Equipe_ID">
<generator class="native">
<param name="sequence">Equipe_ID_SEQUENCE</param>
</generator>
</id>
<natural-id mutable="true">
<property name="codeEquipe"
column="Equipe"
type="java.lang.String"/>
</natural-id>
<version name="version"
column="VERSION"
type="integer"/>
<many-to-one column="CSI_ID" class="Csi" name="csi" not-null="true" foreign-key="FK_Equipe_CSI" />
</class>
</hibernate-mapping> |
fichier Periode.hbm.xml:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="monprojet.bean">
<class name="Periode" table="PERIODE_PERI">
<id column="PERI_ID" name="id" type="java.lang.Long">
<generator class="native">
<param name="sequence">PERI_ID_SEQUENCE</param>
</generator>
</id>
<natural-id mutable="true">
<property column="MOIS" generated="never" lazy="false"
name="mois" type="java.lang.Short"/>
<property column="ANNEE" generated="never" lazy="false"
name="annee" type="java.lang.Short"/>
</natural-id>
<version column="VERSION" generated="never" name="version" type="integer"/>
</class>
</hibernate-mapping> |
Je souhaiterais de plus trouver un manuel de référence pour l'écriture des criterias avec le maximum d'exemples. Quelqu'un aurait-il des recommandations ( je sais, j'en demande beaucoup )...
Merci pour votre réponse.