1

分析されていない記事 (Article.class) の数をすべて取得しようとしています (analyzed == false)。悲しいことに、次のコードはまったく間違った数値を返します。誰かが理由を知っていますか?

CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery<Long> query = cb.createQuery(Long.class);
query.select(cb.count(query.from(Article.class)));
Root<Article> articles = query.from(Article.class);
Predicate condition = cb.isFalse(articles.get(Article_.analyzed));
query.where(condition);
TypedQuery<Long> unanalyzedArticlesAmount = entityManager.createQuery(query);
return unanalyzedArticlesAmount.getSingleResult();
4

1 に答える 1

0

最後にこの投稿を読んでください: How to count the number of rows of a JPA 2 CriteriaQuery in a generic JPA DAO?

そして、次の解決策を見つけました:

CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery query = cb.createQuery();    
Root<Article> root = query.from(Article.class);
query.select(cb.count(root));
Predicate condition = cb.isFalse(root.get(Article_.analyzed));
query.where(condition);
TypedQuery<Long> unanalyzedArticlesAmount = entityManager.createQuery(query);
return unanalyzedArticlesAmount.getSingleResult();
于 2018-05-23T14:56:33.043 に答える