【发布时间】:2013-06-27 13:49:48
【问题描述】:
我正在做类似的事情:
Criteria criteria = getSession().createCriteria(Employee.class);
Criteria metaDataCriteria = criteria.createCriteria("metaData");
Criteria contractCriteria = metaDataCriteria.createCriteria("currentRunningContract");
if (key.equals("directorate")) {
contractCriteria.createCriteria(key).add(Restrictions.in("id", (Long[])parameters.get(oKey)));
}
if (key.equals("grade")) {
contractCriteria.createCriteria(key).add(Restrictions.in("id", (Long[])parameters.get(oKey)));
}
if (key.equals("gradeLevel")) {
contractCriteria.createCriteria(key).add(Restrictions.in("id", (Long[])parameters.get(oKey)));
}
我在这里明确要做的是将子标准添加到contractCriteria,这取决于是否在我通过函数的关联数组中找到密钥,但我得到了异常:org.hibernate.QueryException:重复关联路径:在 metaData 类上,但我认为我在这里不需要任何别名,因为我使用的是相同的标准,你能帮我吗...?
谢谢!!!
【问题讨论】:
-
如果您在标准内的标准上添加具有相同字段名称的限制,则必须添加别名
-
查看here 一种使用
SqlRestriction和exists的解决方法。
标签: java hibernate criteria andromda