0
我對上述關係感到困惑。JPQL,Java(和Oracle DB)之間的關係
我的Oracle數據庫表:
xd_Users: user_id (pk), client_id (fk), name, doj, email, dol
xd_Managers: manager_id (pk), user_id (fk)
相應的Java實體用戶和經理分別與上述兩個表。管理器和用戶是分開的,通過繼承不相關,並且具有對應於數據庫表的字段。
在我的應用程序中,經理必須是用戶。
我正在寫一個(n尚未完成)方法(在名爲PersistService
的類中)來檢索經理的用戶列表。
public static ArrayList<User> getManagersForClient(Client client) {
Long clientId = client.getClientId();
EntityManager em = getEntityManager();
String sqlQuery = "SELECT u FROM XD_USERS u, XD_MANAGERS m WHERE u.CLIENT_ID = :clientId";
TypedQuery<User> query = em.createQuery(sqlQuery, User.class);
query = query.setParameter("clientId", clientId);
ArrayList<User> clientUsers = (ArrayList<User>) query.getResultList();
for (User user : clientUsers) {
}
return clientUsers;
}
我構造的僞SQL查詢爲(:CLIENT_ID在端僅僅是Java變量,因此僞SQL):
select * from users u join managers m on u.user_id = m.user_id where u.client_id = :client_id;
我無法轉換此爲一個有效的JPQL查詢。我不明白如何考慮解決這個問題。特別是,識別變量,單值關係字段,集合值關係字段和持久字段之間的關係非常混亂。而且我更加困惑於this的帖子。請幫忙!
正如答案的鏈接的問題說: :JPQL處理實體,而不是表格。然而,你還沒有發佈你的實體代碼,而是你的表的描述,這是無關緊要的。你也可以命名你的變量'sqlQuery',儘管你知道它不是SQL,但是JPQL。 –