JPA Criteria API извлекает определенные поля - PullRequest
0 голосов
/ 31 мая 2018

У меня есть 2 сопоставленных объекта, и я хочу получить определенные поля, используя Criteria API .Можно использовать метод root.join(...), но я хочу использовать root.fetch(...).

. Это мой код.

CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Post> q = cb.createQuery(Post.class);
Root<Post> root = q.from(Post.class);
Join<Post, PostComment> join = root.join(Post_.comments);
q.multiselect(root.get(Post_.id),join.get(PostComment_.review));
return em.createQuery(q).getResultList();

Это работает нормально и возвращает только 2 поля: идентификатор и просмотр,но возвращенные данные дублируются, и к каждому сообщению добавляется только один комментарий (работает как соединение с базой данных).Я хотел бы сделать:

CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Post> q = cb.createQuery(Post.class);
Root<Post> root = q.from(Post.class);
Fetch<Post, PostComment> fetch = root.fetch(Post_.comments);
q.multiselect(root.get(Post_.id),fetch.get(PostComment_.review));
return em.createQuery(q).getResultList();

, но fetch.get() не является функцией.Как я могу это сделать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...