У меня есть динамический поиск с 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
Criterion
, возможно, является лучшей идеей, потому что таким образом вы всегда имеете определенный критерий. Имея их список, вы должны подумать о логической операции по умолчанию для их интерпретации. Возможно, это будет конъюнкция, но первый способ более гибкий. С другой стороны, я бы избегал такого дизайнерского решения, потому что оно нарушает инкапсуляцию для уровня DAO. Вам потребуются спящие зависимости. Я бы предложил продолжать создавать доменно-ориентированные методы для каждого конкретного случая с простыми аргументами. - person Viktor Stolbin   schedule 17.07.2012