私は次のエンティティ構造を持っています:
+-----------+ +-------------+
| User | -------------> | Role |
+-----------+ +-------------+
^
|
+-------+---------+
| |
+-----------+ +-----------+ +------------+
| Role1 | | Role2 |--------> | SomeEntity |
+-----------+ +-----------+ +------------+
Role2 が特定のプロパティ値を持つ SomeEntity を持つすべての User の名前を取得したいと考えています。JPA基準APIでこれを行う必要があります。
私がこれまでに行ったことは次のとおりです。
CriteriaBuilder cb = ...
CriteriaQuery<String> query = cb.createQuery(String.class);
Root<User> user = query.from(User.class);
SetJoin<User, Role> 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<User, Role2>.
ここでポリモーフィック クエリを実行する方法は? 助言がありますか?
残念ながら、JPA 基準 API は Hibernate の基準 API ほど直感的ではありません。