18

メタモデルクラスを使用せずに、次のJPA2基準クエリを作成するにはどうすればよいですか。

CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Employee> cq = cb.createQuery(Employee.class);
Root<Employee> emp = cq.from(Employee.class);
cq.where(cb.isEmpty(emp.get(Employee_.projects)));
cq.select(emp);

使用したい:

cq.where(cb.isEmpty(emp.get("projects")));

しかし、パスを式に変換する方法がわかりません。これは、cb.isEmpty...で必要です。

ありがとう。

4

1 に答える 1

22

これを試して:

CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery cq = cb.createQuery(Employee.class);
Root emp = cq.from(Employee.class);
cq.where(cb.isEmpty(emp.<List<Project>>get("projects")));
cq.select(emp);

または、Path変数を使用します。

CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery cq = cb.createQuery(Employee.class);
Root emp = cq.from(Employee.class);
Path<List<Project>> projects = emp.get("projects"));
cq.where(cb.isEmpty(projects);
cq.select(emp);

参照

于 2010-08-31T01:50:38.683 に答える