Bonjour,
Après une longue recherche infructueuse je me résous à poster. Mon problème est que je ne sais pas comment écrire une requête (hql, criteria, ...) sur une Map. Je m'explique :
J'utilise hibernate 3.2 avec les annotations ejb3.
J'ai une classe LoggingData qui contient entre autres un attribut xmlValues de type Map<String,String> que j'ai mappé de la façon suivante :
Code:
@CollectionOfElements
@JoinTable(name="logging_xmlvalue",joinColumns=@JoinColumn (name="logging_fk"))
public Map<String, String> getXmlValues() {
return xmlValues;
}
En base j'ai donc deux tables : logging (qui contient les attributs "simples" de LoggingData) et logging_xmlvalue (qui contient les maps). Voilà le schéma de cette dernière :
Code:
CREATE TABLE LOGGING_XMLVALUE (
logging_fk NUMBER(20) REFERENCES logging(oid),
mapkey NVARCHAR2(255),
element NVARCHAR2(255))
Les méthodes create, read, update, delete fonctionne parfaitement. Comment écrire une requête de la forme : "trouve tous les LoggingData dont la map contient la clé 'name' et dont la valeur correspondante est 'valeur 1' ?"
Merci pour vos réponses