【发布时间】:2020-08-08 22:53:36
【问题描述】:
我试过this解决方案:
List<javax.persistence.Tuple> result = entityManager.createQuery("select f.Id as Id, f.Project as Project from FirewallRequest f", javax.persistence.Tuple.class)
.getResultList();
result.get(0).get("Project");
我明白了:
java.lang.ClassCastException: class [Ljava.lang.Object; cannot be cast to class javax.persistence.Tuple ([Ljava.lang.Object; is in module java.base of loader 'bootstrap'; javax.persistence.Tuple is in unnamed module of loader java.net.URLClassLoader @7a9273a8)
所以它似乎返回 List 的 Objects 而不是 Tuples。 EclipseLink 不支持Tuple 还是有什么问题?
调试器显示它实际上是Vector 的Objects:
我正在使用 TomEE 8,它将 EclipseLink 2.7.4.v20190115 用于 JPA。我可以尝试使用 JPA Criteria Query,但我正在从 SQL 转换,将其转换为 JPQL 会更容易。
编辑 1
Here 是链接文章作者的回答,也表明这应该可行。
编辑 2
EclipseLink issue 已创建。
编辑 3
幸运的是,它适用于 JPA 标准查询 (CriteriaBuilder#createTupleQuery())。将 SQL 转换为此需要更多的工作,但至少它可以工作。
【问题讨论】:
标签: jpa eclipselink jpql