DetachedCriteria不直接提供limit限制,而是需要借助Criteria来跳转一把!
关键代码是:
Criteria cri = dc.getExecutableCriteria(sessionFactory.getCurrentSession());
cri.setMaxResults(10);
控制台得到的是:
Hibernate:
select
this_.id as id7_0_,
this_.devicePhoneNum as devicePh2_7_0_,
this_.keywords as keywords7_0_,
this_.searchDate as searchDate7_0_
from
ocnkm.dd_searchhistory this_
where
this_.devicePhoneNum=?
order by
this_.searchDate desc limit ?
具体的代码:
@Resource SessionFactory sessionFactory; @Override public List<DdSearchhistory> getSearchHistoryList(DdSearchhistory his) { DetachedCriteria dc = DetachedCriteria.forClass(DdSearchhistory.class); if(!ValidateUtils.isEmpty(his.getDevicePhoneNum())){ dc.add(Restrictions.eq("devicePhoneNum", his.getDevicePhoneNum())); } dc.addOrder(Order.desc("searchDate")); Criteria cri = dc.getExecutableCriteria(sessionFactory.getCurrentSession()); cri.setMaxResults(10); return cri.list(); }