如何在项目中使用Hibernate标准别名?
我有以下代码:如何在项目中使用Hibernate标准别名?,hibernate,alias,projection,Hibernate,Alias,Projection,我有以下代码: Criteria c = getMySession() .createCriteria(Company.class, "company") .createAlias("company.employees", "employee") .add(Restrictions.eq("company.name", companyName)) .add(Restrictions.eq("emplo
Criteria c = getMySession()
.createCriteria(Company.class, "company")
.createAlias("company.employees", "employee")
.add(Restrictions.eq("company.name", companyName))
.add(Restrictions.eq("employee.workingHours", companyName))
.setFirstResult(firstResult)
.setMaxResults(maxResults)
.setProjection(Property.forName("employee"))
;
公司有一个员工实体列表
如果我使用
.setProjection(Property.forName("employee.name"))
结果是员工姓名的字符串列表
如果我使用
.setProjection(Property.forName("employee"))
我在等一份员工实体的清单。
我得到的是一个错误,说“员工”不是公司的财产。如何检索员工对象列表?如果需要员工,则构建查询以最初返回员工
Criteria c = getMySession()
.createCriteria(Employee.class, "employee")
.createAlias("employee.company", "company")
.add(Restrictions.eq("company.name", companyName))
.add(Restrictions.eq("employee.workingHours", companyName))
.setFirstResult(firstResult)
.setMaxResults(maxResults)
;
但是我没有公司属性,因此employee.company将不起作用。您可以尝试使用.setResultTransformer(Transformers.aliasToBean(employee.class)):)它也不起作用。SELECT中的投影字段都是公司、表关系公司和员工的字段。转换器无法工作,因为它将尝试将公司的字段设置为Employee类。。