如何在项目中使用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类。。