私は上記の関係について混乱しています。JPQL、Java(およびOracle DB)間の関係
のMy Oracle DBテーブル:Javaのエンティティのユーザーとマネージャーの対応
xd_Users: user_id (pk), client_id (fk), name, doj, email, dol
xd_Managers: manager_id (pk), user_id (fk)
は、それぞれ上記の二つのテーブルに関連しています。マネージャーとユーザーは分離しており、継承に関係なく、DBテーブルに対応するフィールドがあります。
私のアプリケーションでは、マネージャはユーザーでなければなりません。
私は管理者であるユーザーのリストを取得するために(まだ未完成の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であることがわかります。 –