JPA のフィルター条件について質問があります。フィルター条件のみ別の Entity クラスを呼び出すことは可能ですか?
JSF ページが読み込まれると、ManagedBeans で呼び出されるメソッドがEmployeeDAOImp
呼び出されます。findEmployee
ユーザーがフィルター条件を JSF のデータテーブルに入れると、対応する Entity クラス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+"%");
}