当我尝试在JPQL查询中使用构造函数表达式
时class CompanyProjection {
String name;
List<Employee> employees;
public CompanyProjection (String name, List<Employee> employees) {
...
}
}
class Company {
String name;
@OneToMany(mappedBy = "company")
List<Employee> employees;
}
class Employee {
@ManyToOne
Company company;
}
select com.foo.CompanyProjection(c.name, c.employees) from Company c
我得到org.hibernate.hql.internal.ast.QuerySyntaxException: Unable to locate appropriate constructor on class [com.foo.CompanyProjection]. Expected arguments are: java.lang.String, com.foo.Employee[........]
从上面的堆栈跟踪中,我理解Hibernate期望第二个构造函数参数具有Employee.class类型而不是List.class。
但c.employees
实际上是一个列表。我不明白它是否是冬眠中的错误,或者我是否滥用它?