Java org.hibernate.QueryException:重复关联路径:元数据
我在做一些事情,比如:Java org.hibernate.QueryException:重复关联路径:元数据,java,hibernate,criteria,andromda,Java,Hibernate,Criteria,Andromda,我在做一些事情,比如: Criteria criteria = getSession().createCriteria(Employee.class); Criteria metaDataCriteria = criteria.createCriteria("metaData"); Criteria contractCriteria = metaDataCriteria.createCriteria("currentRunningContract"
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:duplicate association path:,但我不认为我需要任何别名,因为我使用相同的标准,你能帮我吗
谢谢 我得到了答案谢谢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...
我使用了我在firs一枪中创建的别名:)
Cya all:)如果要在标准内部的标准上添加具有相同字段名的限制,则必须添加别名请参阅使用
SqlRestriction
和存在的解决方法。