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方法。
答案 0 :(得分:0)
您可以在join
和Scholarship
之间设置Person
,然后使用该联接按name
字段排序。