Использование ограничений в EJBQL для Seam
Я очень новичок в Seam, мне нужно кое-что прояснить в приведенном ниже коде, мне нужно знать, как он работает, как использовать ОГРАНИЧЕНИЯ в этом коде.......
package org.domain.pixel.action;
import org.domain.pixel.entity.*;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.framework.EntityQuery;
import java.util.Arrays;
@Name("projectList")
public class ProjectList extends EntityQuery<Project> {
private static final long serialVersionUID = -7673337640345325071L;
private static final String EJBQL = "select project from Project project";
private static final String[] RESTRICTIONS = {
"lower(project.processOwner) like lower(concat(#{projectList.project.processOwner},'%'))",
"lower(project.projectName) like lower(concat(#{projectList.project.projectName},'%'))",
};
private Project project = new Project();
public ProjectList() {
;
setEjbql(EJBQL);
setRestrictionExpressionStrings(Arrays.asList(RESTRICTIONS));
setMaxResults(25);
}
public Project getProject() {
return project;
}
}
1 ответ
Размещенный вами код является стандартным подходом в Seam для создания вспомогательного компонента (или "действия") для представлений, основанных на списках. ProjectList
создает набор результатов на основе запроса JPA (называемого "EJBQL"), и ограничения являются средством динамического создания предложения WHERE для этого запроса, например, на основе пользовательского ввода.
Пользовательский ввод, скорее всего, помещается в экземпляр var, называемый "project
". Ограничения (всего 2) выбирают только записи (из таблицы, соответствующей классу сущностей Проекта), для которых processOwner
И projectName
равны processOwner
И projectName
установить в "project
"(на основе сравнения без учета регистра).