架构:每个员工可能有多个电话号码,每个电话号码都属于一个员工(一对多关系)。
使用以下 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]
结果出错。
最佳答案
最有可能的问题是 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];
关于java - 如何访问 JPQL 查询结果的对象数组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10554080/