2

我有一个带有 25 个可选参数的动态搜索。HQl 不是一个选项。我正在使用标准 API。我有 DAO 方法,我想接受可以在我的服务层中构建的“限制”列表,这样,当我从服务中调用我的 DAO 方法时,如下所示:

Lits<myPojoClass> = myDAO.getDataByCriterion( <?Restriction List?> )

myDAO.getDataByCriterion 可以使用“限制列表”,如下所示:

inside the myDAO class

Public List<myPojoClass> getDataByCriterion( <?Restriction List?> restrictionList) {
    Session s = HibernateUtil.currentSession();
    Criteria c = s.createCriteria(myPojo.class)
                  .add(Restrictions ( <?Restriction List?>  );  //attach the list here
    List<myPojoClass> response = c.list();

这似乎是你应该能够做的事情。是否可以添加传递给 DAO 方法的限制

4

1 回答 1

3

是的,这是可能的。您的限制列表应该是标准对象的常规列表(即,列表 <Criterion>)。为了清楚起见,如果您像示例代码一样添加它们,那么您将进行合取(一系列逻辑与)。

将我的建议添加到您的代码中会给出:

Public List<myPojoClass> getDataByCriterion( List<Criterion> restrictionList) {
Session s = HibernateUtil.currentSession();
Criteria c = s.createCriteria(myPojo.class);
for (Criterion crit : restrictionList){
    c.add(crit);
}

List<myPojoClass> response = c.list();
于 2012-07-17T15:38:50.987 回答