Использование ограничений в 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"(на основе сравнения без учета регистра).

Другие вопросы по тегам