JPA查询中有不同类型的选择。 您当前正在使用Array作为返回类型,您需要的是Construct返回类型。 这是实现此目的的方法:
String queryStr = "select NEW package.YourDefinedCustomClass( a.field1, b.field2, c.field3, c.field4) from a left outer join b on a.id=b.fk left outer join c on b.id=c.fk";TypedQuery<YourDefinedCustomClass> query = em.createQuery(queryStr, YourDefinedCustomClass.class);List<YourDefinedCustomClass> results = query.getResultList();
基本上有两件事:
- 自定义类必须是您的结果返回类型
- 自定义类必须具有一个构造函数,该构造函数采用您在查询字符串中定义的结果值。
阅读有关JPA2查询中选择的更多信息。



