我有彈簧刀豆叫HostelDaoImpl
。它使用休眠條件api來檢索結果。如何在spring bean中做hibernate分頁?
public class HostelDaoImpl extends AbstractGenericDao<Hostel, Integer> implements HostelDao {
public HostelDaoImpl() {
super(Hostel.class);
}
public List<Hostel> findHostelBy(HostelSearch hs) {
Criteria criteria = currenSession().createCriteria(Hostel.class);
criteria.setReadOnly(true);
Calendar beginDate = hs.getBeginDate();
String country = hs.getCountry();
if (beginDate != null)
criteria.add(Restrictions.le("beginDate", beginDate));
if (country != null) {
criteria.add(Restrictions.eq("country", country));
}
criteria.setProjection(Projections.rowCount());
Integer foundHostelsCount = (Integer) criteria.uniqueResult();
if (foundHostelsCount > 100) {
// do pagination
}
}
}
現在代替那些評論我需要分頁。 我只想創建Criteria
一次,然後在某處存儲Criteria
,並且每次用戶請求新數據部分時,都會撥打Criteria
的setFirstResult
和setMaxResults
。
在哪裏存儲Criteria
如果spring bean HostelDaoImpl
是單例,如果我創建實例變量Criteria criteria
它同時是不安全的。
在哪裏存儲標準以保證線程安全?
但是如果你知道在spring bean中實現hibernate分頁的更好方法,請提供它。
謝謝!
你是對的! –