我正在做类似的事情:
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 类上,但我认为我在这里不需要任何别名,因为我使用的是相同的标准,你能帮帮我吗...?
谢谢!!!
最佳答案
感谢 Pritesh Shah,我得到了答案,这是解决方案
Criteria criteria = getSession().createCriteria(Employee.class, "employee").createCriteria("metaData", "mData").createCriteria("currentRunningContract", "currentContract");
if (key.equals("directorate")) {
criteria.createCriteria("currentContract."+key).add(Restrictions.in("id", (Long[])parameters.get(oKey)));
}Blahblah etc...
我使用了我在第一个镜头中创建的别名 :)
所有 Cya :)
关于java - 组织.hibernate.QueryException : duplicate association path: metaData,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17345017/