假设我们有一个 Person 类,它是一个简单的休眠实体。我们有一个 DAO,它有一个方法可以检索名称列表中列出的所有 Person 行:
@Transactional
public List<Person> getPersons(List<String> personNames) {
ArrayList<Criterion> locationCriterions = new ArrayList<Criterion>();
if(personNames == null) {
return new ArrayList<Person>();
}
Criterion [] arrayOfPersonCriterions = new Criterion
[personNames.size()];
int currentIndex = 0;
for(String currentPersonName : personNames) {
arrayOfPersonCriterions[currentIndex](Restrictions.eq("name",
currentPersonName));
currentIndex++;
}
Criterion personFinalCriterion = Restrictions.or(arrayOfPersonCriterions);
Session currentSession = sessionFactory.getCurrentSession();
Criteria criteria = currentSession.createCriteria(Person.class);
return (List<Person>)criteria.add(personFinalCriterion).list();
}
问题:如何限制检索结果的数量——就像在 SQL 中我们可以使用 LIMIT X, Y 查询文本一样?
请注意:
我想使用 Criteria API 并避免本机查询 - 我可以使用本机查询但一般不想摆脱 Criteria,
避免处理返回的列表,以便它只返回我认为无意义且效率低下的结果范围。
BIG阳
哆啦的时光机
相关分类