I am very new to Seam, I need some clarification in this below code , I need to know how it works, what is use of RESTRICTIONS in this code .......
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;
}
}
The code you posted is a standard approach in Seam to create a backing bean (or "action") for views that are list-based. The
ProjectListcreates a result set based on the JPA query (called "EJBQL"), and the restrictions are a a means to dynamically create a WHERE clause for this query, for instance based on user input.The user input is most likely placed in the instance var called "
project". The restrictions (2 in total) select only records (from the table corresponding to the Project entity class) for which theprocessOwnerAND theprojectNameare equal to theprocessOwnerAND theprojectNameset in "project" (based on a case-insensitive comparison).