我有以下实体结构:
+-----------+ +-------------+
| User | -------------> | Role |
+-----------+ +-------------+
^
|
+-------+---------+
| |
+-----------+ +-----------+ +------------+
| Role1 | | Role2 |--------> | SomeEntity |
+-----------+ +-----------+ +------------+
我想获取其Role2具有SomeEntity并具有特定属性值的所有User的名称.
我需要使用JPA标准API执行此操作.
到目前为止我所做的是:
CriteriaBuilder cb = ...
CriteriaQuery query = cb.createQuery(String.class);
Root user = query.from(User.class);
SetJoin userRolesJoin = user.join(User_.roles);
// As you can see the userRolesJoin is of type Role and a Role doesn't have
// an property someEntity. So how to "cast" the userRolesJoin into an
// SetJoin.
如何在这里进行多态查询?有什么建议?
不幸的是,JPA标准API并不像Hibernate的critera API那样直观.