2010-06-24 30 views
0

我對Seam非常新,我需要在下面的代碼中做一些說明,我需要知道它是如何工作的,在這個代碼中有什麼限制使用.......在EJBQL中對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; 
} 
} 

回答

0

您發佈的代碼是Seam中爲基於列表的視圖創建輔助bean(或「action」)的標準方法。 ProjectList基於JPA查詢(稱爲「EJBQL」)創建結果集,並且限制是爲此查詢動態創建WHERE子句的方式,例如基於用戶輸入。

用戶輸入很可能放在名爲「project」的實例var中。這些限制(總共2個)僅選擇processOwnerprojectName等於processOwnerprojectName中設置的「project」(基於不區分大小寫的比較)的記錄(來自與項目實體類對應的表) 。