EJBQL中对Seam的限制使用

时间:2010-06-24 08:00:18

标签: seam-conversation

我是Seam的新手,我需要在下面的代码中做一些澄清,我需要知道它是如何工作的,在这段代码中使用RESTRICTIONS是什么.......

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 个答案:

答案 0 :(得分:0)

您发布的代码是Seam中的标准方法,用于为基于列表的视图创建辅助bean(或“操作”)。 ProjectList基于JPA查询(称为“EJBQL”)创建结果集,并且限制是为此查询动态创建WHERE子句的方法,例如基于用户输入。

用户输入很可能放在名为“project”的实例var中。限制(总共2个)仅选择processOwnerprojectName等于processOwner和{{1}的记录(来自与Project实体类对应的表)在“projectName”中设置(基于不区分大小写的比较)。