【问题标题】:Hibernate select query休眠选择查询
【发布时间】: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 规范所说的那样。因此,您对该结果的后处理是错误的。调试你的代码

标签: java hibernate jpa


【解决方案1】:
selectEntry.setParameter("itemType",ob.getItemType());

这可能是可能的原因。 DB 中的ob.getItemType() 数据类型和itemType 数据类型不匹配。可以改正后再试吗?

【讨论】:

  • 嗨,数据类型不是问题我想我在我的其他功能以及同一个类中使用相同类型的查询。 ob.getItemType() 基本上获取一个映射到我的数据库列的字符串值。
  • 我已将这些查询与单个表一起使用,它运行良好,但这里我有 2 个表,但它失败了
猜你喜欢
  • 1970-01-01
  • 2018-12-04
  • 1970-01-01
  • 2011-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-16
  • 2021-12-24
相关资源
最近更新 更多