Я пробовал это решение:
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. Tuple не поддерживается EclipseLink или в чем проблема?
Отладчик показывает, что на самом деле это Vector из Objects:
Я использую TomEE 8, который использует EclipseLink 2.7.4.v20190115 для JPA. Я мог бы попробовать с JPA Criteria Query, но я конвертирую из SQL, и было бы проще преобразовать его в JPQL.
Изменить 1
Вот ответ автора связанной статьи, который также предполагает, что это должно работать.
Изменить 2
Создана проблема EclipseLink.
Изменить 3
К счастью, он работает с JPA Criteria Query (CriteriaBuilder#createTupleQuery()). Больше работы по преобразованию SQL в это, но, по крайней мере, это работает.
