«сейчас» означало именно последнюю версию JPA, которая была (есть) 2.1

аюсь, как в заголовке, вставить подзапрос в предложении выбора, как в этом простом SQL:

SELECT id, name, (select count(*) from item) from item

очевидно, что это всего лишь фиктивный запрос, чтобы подчеркнуть мою точку зрения. (Смысл в том, чтобы получить последний счет для каждого элемента, возвращенного запросом.)

Я пробовал это:

CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Tuple> c = cb.createTupleQuery();
Root<Item> item= c.from(Item.class);

Subquery<Long> scount = c.subquery(Long.class);
Root<Item> sarticolo = scount.from(Item.class);
scount.select(cb.count(sitem));

c.multiselect(item.get("id"),item.get("nome"), scount);

Query q = em.createQuery(c);
q.setMaxResults(100);
List<Tuple> result = q.getResultList();

for(Tuple t: result){
  System.out.println(t.get(0) + ", " + t.get(1) + ", " + t.get(2));
}

но я получаю только:

java.lang.IllegalStateException: подзапрос не может произойти в предложении выбора

Как я могу получить аналогичный результат?

Ответы на вопрос(4)

Ваш ответ на вопрос