如何通过JPQL查询访问对象数组列表

时间:2012-05-11 15:12:11

标签: java generics jpa collections jpql

架构:每个员工可能有多个电话号码,每个电话号码属于一个员工(一对多关系)。

使用以下JPQL查询:SELECT e, p FROM Employee e JOIN e.phones p

您将如何在应用程序代码中处理此查询中生成的List<Object[]>?在访问每个员工和他/她在应用程序中的电话号码方面。来自List<Object[]>的代码?使用

em.createNamedQuery("..").getResultList().get(1)[]
// or
em.createNamedQuery("..").getResultList().get(2)[0]

导致错误。

1 个答案:

答案 0 :(得分:1)

问题很可能是getResultList()返回非通用List,因此您必须先将其转换为List<Object[]>

假设您的列表至少有一个应该有效的条目:

Employee e = (Employee)((List<Object[]>)em.createNamedQuery("..").getResultList()).get(0)[0];

更新

仅供参考:根据您使用的JPA版本,您可能会获得List<Object>。在这种情况下,您可以将值转换为Object[]

Employee e = (Employee)((Object[])em.createNamedQuery("..").getResultList().get(0))[0];