我正在使用以下查询来获取ID为1的用户的评论。
在这个查询中,我得到了所有关于perticulate消息的评论。
在这里,我只想获取按commentDate(Date)
字段
from PostMessageUsers as pmu
left join fetch pmu.postMessages as pm
left join fetch pm.comments as cmts
where pmu.atomByReceivedBy.id=1
如何做到这一点
编辑:我想要用户的所有消息。假设用户有100条消息,它将显示100条消息以及每条消息的5条评论
答案 0 :(得分:2)
通过在获取数据列表之前调用查询对象上的setFirstResult()
和setMaxResults()
函数,可以限制查询返回的结果行。
您可以使用以下代码:
Query query = session.createQuery("from PostMessageUsers as pmu left join fetch pmu.postMessages as pm left join fetch pm.comments as cmts where pmu.atomByReceivedBy.id=1 oder by commentDate desc");
query.setFirstResult(0);
query.setMaxResults(5);
List result = query.list();
如果您使用的是条件查询,则可以使用Criteria.setMaxResults(MAXIMUM_RESULT)
答案 1 :(得分:0)
from PostMessageUsers as pmu
left join fetch pmu.postMessages as pm
left join fetch pm.comments as cmts
where pmu.atomByReceivedBy.id=1
and ROWNUM <6
order by commentDate desc
答案 2 :(得分:0)
您可以通过调用函数query.setMaxResults()
来设置获取查询返回的结果的限制。和玩具可以设置查询结果的起始位置。
Query query = session.createQuery("from PostMessageUsers as pmu left join fetch pmu.postMessages as pm left join fetch pm.comments as cmts
where pmu.atomByReceivedBy.id=1 oder by commentDate desc");
query.setFirstResult(0);
query.setMaxResults(5);
List result = query.list();
它将从1条记录开始返回第5个结果的查询结果。 即1至5条记录。
或者
Query query = session.createQuery("from PostMessageUsers as pmu left join fetch pmu.postMessages as pm left join fetch pm.comments as cmts
where pmu.atomByReceivedBy.id=1 oder by commentDate desc");
query.setFirstResult(5);
query.setMaxResults(5);
List result = query.list();
它将从第6条记录开始返回5个结果的查询结果。 即6到10个记录。
如果您想详细说明详细信息,请点击此链接 Hibernate Pagination Example
如果您正在使用Criteria Queries 然后是这个链接 Criteria Queries In Hibernate
...谢谢