Bonjour,
J'ai une classe comme ceci :
Code:
class Person{
long id;
Map<String,String> attributs;
}
mappée comme voici :
Code:
<hibernate-mapping>
<class name="Person" table="PERSON">
<id name="id" column="PERSON_ID">
<generator class="increment"/>
</id>
<map name="attributs" table="PERSON_ATT"">
<key column="PERSON_ID"/>
<map-key column="MAP_KEY" type="string"/>
<element column="MAP_VAL" type="string"/>
</map>
</class>
</hibernate-mapping>
Ce que je souhaite faire c'est récupérer toute les "PERSON" possédant la clé "Nom" avec la valeur "une_valeur_critere" dans leurs attributs.
1) Je peux le faire avec un requete SQL du style :
Code:
select * from person inner join person_att where person_att.map_key = 'Nom' and person_att.map_val = 'une_valeur_critere'
2) Comment le faire avec du HQL ?
3) Existe t'il une méthode avec les "Criteria" ?
Sachant qu'a terme j'aimerais faire une méthode qui prend en parametre une "MAP" de critères et qui retourne la liste des personnes répondant a ces critères.
Sinon j'ai aussi pensé faire :
4)
Code:
class Person{
long id;
Set<PersonAtt> attributs;
}
class PersonAtt{
int id;
string val;
}
et ainsi pouvoir peut être utiliser les "criteria" plus simplement...
Ce qui m'embete avec solution c'est d'avoir une classe "pour rien".
Je débute avec hibernate et j'aimerais faire au mieux donc j'en appel a vos conseils avisés :)
Merci d'avance.