2010-06-24 2 views
0

저는 Seam에 대해 매우 익숙하지 않습니다. 아래 코드에서 설명이 필요합니다. 어떻게 작동하는지 알고 싶습니다.이 코드에서 RESTRICTIONS의 용도는 무엇입니까?Seam 용 EJBQL의 사용 제한

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의 표준 접근 방식입니다. ProjectList은 JPA 쿼리 ("EJBQL")를 기반으로 결과 집합을 생성하며 제한은이 쿼리에 대한 WHERE 절을 동적으로 생성하는 수단입니다 (예 : 사용자 입력을 기반으로 함).

사용자 입력은 "project"이라는 인스턴스 var에 배치 될 가능성이 큽니다. 제약 (전체 2)은 processOwnerprojectNameprocessOwner이고 projectName이 "project"(대소 문자를 구분하지 않는 비교 기준)로 설정 한 레코드 만 선택합니다 (프로젝트 엔터티 클래스에 해당하는 테이블에서) .