偶尔的org.hibernate.QueryException:无法解析属性:com.example.Scholarship的person.name

时间:2017-03-02 19:21:54

标签: java hibernate criteria

org.hibernate.QueryException:无法解析属性:com.example.Scholarship的person.name

我的实体奖学金有一个字段“person”(实体Person),其字段为“name”(String) 当我使用Criteria在数据库上执行简单选择时,我得到了这个异常。

org.hibernate.QueryException:无法解析属性:com.example.Scholarship的person.name

这是我用来执行选择的方法:

    public <T> Collection<T> findAll(Class<T> classe, PagingInformation paging, String orderField, String orderType) throws DAOException {
    Long total = (Long) getSession().createQuery("select count(*) from " + classe.getName()).uniqueResult();

    if (paging != null) {
        paging.setTotalRegistros((int) total.longValue());
    }

    Criteria c = getCriteria(classe);
    c.setCacheable(true);
    if (paging != null) {
        c.setFirstResult(paging.getPaginaAtual() * paging.getTamanhoPagina());
        c.setMaxResults(paging.getTamanhoPagina());
    }
    if (orderType.equals("asc")) {
        c.addOrder(Order.asc(orderField));
    } else {
        c.addOrder(Order.desc(orderField));
    }
    return c.list();
}

我传递给orderField字符串“person.name”和orderType“asc”。关键是,Person有另一个字段,id(long),当我通过“person.id”时,它工作得很好。那怎么回事?我不能使用字段的字段来使用Criteria执行排序?

p.s:问题不是大写或者这种拼写错误,我得到了所有的getters方法。

1 个答案:

答案 0 :(得分:0)

您可以在joinScholarship之间设置Person,然后使用该联接按name字段排序。