0

我有一个视频类,它有一个对另一个类评论的 OneToMany 注释。

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

我在查询中设置了 setMaxResults(4),希望只检索最后 4 个视频。如果任何视频都没有评论,这将非常有用。但是,如果我为每个视频指定超过 1 条评论,我的查询现在返回的视频少于 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