3

基準ビルダーを使用してデータベースからデータを取得しようとしています。それはうまく機能しています、クエリはほぼ完璧です...ほぼ。残念ながら、Java は、クエリの結果として group by または distinct を使用することを望んでいません。Javaに一意のレコードのみを取得させる方法は? 私のコードはここにあります:

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();
4

1 に答える 1

2

クエリを作成する行の 2 行下を入れ替えてみてください。

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

javax.persistence.Query q = em.createQuery(select);
于 2013-01-20T20:04:43.173 に答える