我有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个字段ID和审核,但返回的数据是重复的,每个帖子只有一个帖子评论。(就像数据库连接一样)。我想这样做:
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()
不是函数。我该怎么办?