我有一个类视频,它有一个OneToMany注释到另一个类Comment。
@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);