1

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

使用以下 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]

导致错误。

4

1 回答 1

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];
于 2012-05-11T15:14:37.493 回答