У меня есть объект Hibernate, называемый Event, который имеет объект метаданных «один ко многим», EventData.Hibernate поиск один-ко-многим с критериями
Учитывая следующее событие:
EventId: 1
EventHash: брокколи
Со следующим EventDatas:
EventDataId: 1
EventId: 1
поля: тег
Содержание : tagme
EventD ataId: 2
EventId: 1
полей: тег
Содержание: anotherTag
Как создать запрос Критерии для получения события, которое имеет как метки "anotherTag" и "Тагме"? В SQL, я бы присоединиться к таблице event_data один раз для каждого тега разыскивается, но я могу только показаться, чтобы создать один псевдоним для отношений Event.EventData, т.е.
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++;
}
не работает; duplicate association path: Event.EventData
Аналогично, нормальный Conjunction не работает, потому что положение заканчивается как:
((ed3_.field='tag' and ed3_.content='anotherTag') and (ed3_.field='tag' and ed3_.content='tagme'))
и, к сожалению, поле базы данных не может иметь два разных значения одновременно.
Любые идеи относительно того, как я могу очистить это, или это единственный вариант, возвращающийся к HQL?
Superb, спасибо! – Martin