4
我有一个叫做Event的Hibernate实体,它有一个一对多的元数据实体EventData。使用Criteria休眠一对多搜索
鉴于以下事件:
事件ID:1
EventHash:西兰花
用下面EventDatas:
EventDataId:1
事件ID:1
场:标签
内容:tagme
EventD ataId:2个
事件ID: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
同样,一个正常的连词是不行的,因为该条款最终成为:
((ed3_.field='tag' and ed3_.content='anotherTag') and (ed3_.field='tag' and ed3_.content='tagme'))
和,可悲的是,数据库中的字段不能在同一时间有两个不同的值。
任何想法,我可以如何清理这个,或者是唯一的选择恢复到HQL?
精湛,谢谢! – Martin 2010-08-27 09:37:48