java - 如何访问 JPQL 查询结果的对象数组列表

标签 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]

结果出错。

最佳答案

最有可能的问题是 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/

相关文章:

java - ProgressMonitor 和 SwingWorker 不工作

java - 安卓公钥加密

C#:根据值切换返回值类型

c# - Java通过反射创建通用Arraylist

java - 没有自然键可用时 equals() 和 hashCode() 的实现?

java - Hibernate集合延迟加载奇怪的行为

google-app-engine - 使用 JPA 和 Google App Engine 更新查询

Java String.Split 拆分大家

java 。 String 内的 if 语句作为函数参数

c# - List<T> 和数组索引器有什么区别?