2017-03-02 65 views
0

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

我的实体

person.name奖学金有一个领域“人”(实体人),它有一个字段“名称”(字符串) 当我使用标准来执行一个简单的选择数据库时,我得到这个异常。

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”它工作得很好。那么问题是什么?我无法使用字段的字段来使用Criteria执行排序?

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

+0

你能发布生成的查询吗? –

+0

在生成任何查询之前抛出异常 –

回答

0

您可以在ScholarshipPerson之间创建join,然后使用该连接按name字段排序。

相关问题