休眠:标准。是否可以构建一个限制列表,然后将其添加到Criteria对象

时间:2012-07-17 15:30:18

标签: java hibernate criteria restrictions

我有一个带有25个可选参数的动态搜索。 HQl不是一个选项。我正在使用Criterion 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方法的限制

1 个答案:

答案 0 :(得分:3)

是的,这是可能的。您的限制列表应该是Criterion对象的常规列表(即List&lt; Criterion&gt;)。需要明确的是,如果你将它们全部添加到示例代码中,那么你将会做一个连接(一系列逻辑AND)。

将我的建议添加到您的代码中可以得到:

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();