J'ai une entité Hibernate, appelée Event, qui a une entité de métadonnées un-à-plusieurs, EventData.Hibernate recherche un-à-plusieurs avec les critères
Compte tenu de l'événement suivant:
EventId: 1
EventHash: brocoli
Avec les EventDatas suivants:
EventDataId: 1
EventId: 1
terrain: tag
contenu : tagme
EventD ataId: 2
EventId: 1
terrain: tag
Contenu: anotherTag
Comment puis-je créer une requête de critères pour récupérer l'événement qui a des balises "anotherTag" et "Tagme"? Dans SQL, je rejoins la table event_data une fois pour chaque étiquette étant recherchée, mais je ne peux pas sembler créer un alias pour la relation Event.EventData, à savoir
int inc = 0;
Conjunction junc = Restrictions.conjunction();
for (String tag : tags) {
crit.createAlias("e.EventData", "ed"+inc);
junc.add(
Restrictions.and(
Restrictions.eq("ed"+inc+".field", "tag"),
Restrictions.eq("ed"+inc+".content", tag)
)
);
inc++;
}
Ne fonctionne pas; duplicate association path: Event.EventData
De même, une Conjonction normale ne fonctionne pas, parce que la clause finit comme:
((ed3_.field='tag' and ed3_.content='anotherTag') and (ed3_.field='tag' and ed3_.content='tagme'))
et, malheureusement, le champ de base de données ne peut pas avoir deux valeurs différentes en même temps.
Des idées sur comment je pourrais nettoyer cela, ou est la seule option revenant à HQL?
Superbe, merci! – Martin