我有一个视频类,它有一个对另一个类评论的 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);