我对 JPA 中的过滤条件有疑问,是否可以仅为过滤条件调用另一个实体类
我有一个被调用的方法,当加载 JSF 页面时,它将在 ManagedBeans 中调用EmployeeDAOImp
。findEmployee
当用户在 JSF 的数据表中放置过滤条件时,它会搜索相应的实体类,即Employee
(Employee_
元模型)
我想知道是否可以对另一个EmployeeAll_
仅以过滤器命名的实体类进行分类,即当用户应用过滤器而不是Employee_
类时?
Employee_
和类之间的区别EmployeeAll_
是第一个没有所有员工记录(仅限于他的部门,后者有所有员工(所有部门)。两者都返回相同的数据库列集。
任何帮助都是非常可观的。
EmployeeDAOImpl 类
public void findEmployee(Employee employee) {
try {
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery<Employee> e = cb.createQuery(Employee.class);
Root<Employee> emp = c.from(Employee.class);
e.orderBy(cb.desc(emp.get("employeeNo")));
c.select(emp);
CriteriaQuery<Long> countQ = cb.createQuery(Long.class);
Root<Employee> empCount = countQ.from(Employee.class);
countQ.select(cb.count(empCount));
String employeeNo = employee.getEmployeeNo("");
List<Predicate> criteria = new ArrayList<Predicate>();
if (employeeNo != null) {
ParameterExpression<String> pexp =
cb.parameter(String.class,"employeeNo");
Predicate predicate =
cb.like(emp.get(Employee_.employeeNo),pexp);
criteria.add(predicate);
}
TypedQuery<Employee> q = entityManager.createQuery(c);
if (employeeNo != null) {
q.setParameter("employeeNo", employeeNo+"%");
}