0

別のクラス Comment への OneToMany 注釈を持つクラス Video があります。

@OneToMany(fetch = FetchType.LAZY, mappedBy = "videoId", cascade = CascadeType.ALL, orphanRemoval = true)
@Sort(type = SortType.COMPARATOR, comparator = CommentComparator.class)

クエリで setMaxResults(4) を設定して、最後の 4 つのビデオのみを取得することを望んでいます。どの動画にもコメントが存在しない場合、これはうまく機能します。ただし、ビデオごとに複数のコメントを指定すると、クエリは 4 つ未満のビデオを返すようになりました (フェッチされた行を maxResult としてカウントすると思います)。

クエリで 4 つの動画すべてが返されるようにするにはどうすればよいですか?

public <T>List<T> find(Class<T> clazz, Order order, int maxResults, List<String> fetch, List<Criterion> expressions)
{
    Criteria criteria = getCurrentSession().createCriteria(clazz);
    for (Criterion ex : expressions)
    {
        criteria.add(ex);
    }
    if (maxResults > 0)
    {
        criteria.setMaxResults(maxResults);
    }

    if (fetch != null)
    {
        for (String f : fetch)
        {
            criteria.setFetchMode(f, FetchMode.JOIN);
        }
    }
    criteria.addOrder(order);

    criteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);

    return criteria.list();
}

私は電話しています

return myDao.find(Video.class, Order.desc("id"), maxResult, fetch, criteria);
4

0 に答える 0