如何按日期提取5个最新评论

时间:2014-02-24 08:22:49

标签: hibernate hql

我正在使用以下查询来获取ID为1的用户的评论。 在这个查询中,我得到了所有关于perticulate消息的评论。 在这里,我只想获取按commentDate(Date)字段

排序的5条最新评论
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条评论

3 个答案:

答案 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

...谢谢