架构:每个员工可能有多个电话号码,每个电话号码属于一个员工(一对多关系)。
使用以下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]
导致错误。
答案 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];