【发布时间】:2018-10-11 07:25:20
【问题描述】:
我正在使用以下查询从提到的 2 个表中获取详细信息,然后将结果存储在列表中
Query selectEntry = em.createQuery("select b.affStyle,b.actualAffService " +
"from SdHeaders a, SdAffectedServices b " +
"where a.id = b.id AND a.sdClass = 'NET' AND b.actualAffService IS NOT NULL " +
"AND b.itemType = :itemType " +
"group by b.affStyle, b.actualAffService");
selectEntry.setParameter("itemType",ob.getItemType());
result=selectEntry.getResultList();
执行此操作时,我收到以下错误,列表也应该填充 2 个值,但事实并非如此。
Subquery result[[Ljava.lang.Object;@2b4a90f0]
Result string[[Ljava.lang.Object;@2b4a90f0]
[Ljava.lang.Object;@2b4a90f0
java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
at java.util.ArrayList.rangeCheck(ArrayList.java:657)
at java.util.ArrayList.get(ArrayList.java:433)
当我在 SQL developer 中运行查询时,它会给我正确的结果。有人可以帮忙吗?
【问题讨论】:
-
您是否使用 hibernate 生成的查询验证了数据,您在 SQL 编辑器中执行查询得到了结果
-
看起来您尝试在此之后访问结果。显示堆栈跟踪的接下来几行,以及代码中的下一行
-
我正在尝试从 2 个字段的选择查询中获取结果并将其存储在列表中,然后访问它。
-
我的结果 [] 列表必须为 [Generic,G],这应该是 SQL Developer 中测试的此查询的结果
-
查询返回
List<Object[]>,正如 JPA 规范所说的那样。因此,您对该结果的后处理是错误的。调试你的代码