我有以下實體結構:多態性JPA查詢與CriteriaQuery中API
+-----------+ +-------------+
| User | -------------> | Role |
+-----------+ +-------------+
^
|
+-------+---------+
| |
+-----------+ +-----------+ +------------+
| Role1 | | Role2 |--------> | SomeEntity |
+-----------+ +-----------+ +------------+
,我想所有的用戶,其role2所具有的特定屬性值SomeEntity的名字。 我需要用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的critera API那樣直觀。
SQL不是一個選項嗎?它只是所有這些表之間的一個非常簡單的內部連接... –
可能是的,但它也必須可能與JPA我猜,我不想在代碼中現在引入sql依賴項。 –