JPQL: Inner Join with Group

I am trying to pull data from a database using criteriabuilder. It works great, the request is almost perfect ... almost. Unfortunately Java doesn't want me to use a group or single item as a result of my request. How do I force Java to only fetch unique records? My code is here:

List<Documentation> documentationList = new ArrayList<>();
DatabaseConnector dc = new DatabaseConnector();
List<Predicate> criteria = new ArrayList<Predicate>();
EntityManager em = dc.getEntityManager();
CriteriaBuilder builder = em.getCriteriaBuilder();

CriteriaQuery<Documentation> select = builder.createQuery(Documentation.class);
Root<Documentation> u = select.from(Documentation.class);
Join<Documentation, DocumentationUser> du = u.join("documentationUserCollection",     JoinType.INNER);

javax.persistence.Query q = em.createQuery(select);
select.groupBy(u.<String>get("documentationId"));
select.distinct(true);

documentationList = q.setMaxResults(pageSize).setFirstResult(first).getResultList();

      

+3


source to share


1 answer


Try replacing 2 lines below the line that creates the query:



select.groupBy(u.<String>get("documentationId"));
select.distinct(true);

javax.persistence.Query q = em.createQuery(select);

      

+2


source







All Articles