que estoy tratando, como en el título, para insertar una subconsulta en la cláusula select como en esta sencilla SQL:subconsulta en la cláusula select con API JPA Criterios
SELECT id, name, (select count(*) from item) from item
esto es, obviamente, sólo una consulta simulada sólo para hacer mi punto. (El punto sería la de obtener la última factura para cada artículo devuelto por la consulta.)
He intentado esto:
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));
}
pero solo me dan:
java.lang .IllegalStateException: La subconsulta no puede ocurrir en la cláusula de selección
¿Cómo puedo obtener un resultado similar?
Exactamente qué versión de APP Especificación significa la palabra "ahora" en su respuesta significa? –
"ahora" significaba exactamente la última versión de JPA que era (es) 2.1 –