org.hibernate.QueryException:重复的关联路径:metaData

时间:2013-06-27 13:49:48

标签: java hibernate criteria andromda

我正在做类似的事情:

        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类上,但我认为我不需要任何别名,因为我使用相同的标准,你能帮我吗?

感谢!!!

1 个答案:

答案 0 :(得分:3)

我得到了答案谢谢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 all:)