2014-02-24 73 views
1

我正在使用以下查询为ID为1的用户提取评论。 在此查询中,我收到了所有关于详细消息的评论。 在这里,我想只获取5通过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条评论

回答

2

通过在获取数据列表之前调用查询对象上的setFirstResult()和函数,可以限制查询返回的结果行。 您可以通过用户代码如下:

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)

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 
+0

这HQL查询不起作用。 – xrcwrn

+0

是你得到任何错误.. – Charitha

+0

'org.hibernate.exception.SQLGrammarException':无法执行查询 – xrcwrn

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个开始记录第五届结果的查询结果。 即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(); 

它将返回查询的结果与5个结果从6日记录开始。 即6到10条记录。

,如果你想详细例子,详情请点击此链接 Hibernate Pagination Example

,如果你使用的是标准的查询 然后follwo在这个环节 Criteria Queries In Hibernate

谢谢...

+0

我想要所有用户的消息。假设用户有100条消息,它将显示100条消息以及每条消息的5条评论 – xrcwrn

相关问题