USERS および GROUPS テーブルを持つ既存のシステムがあります。ユーザーとグループの JPA オブジェクトがあります。
テーブル USERGROUPS は、どのユーザーがどのグループに属しているかのマッピングです。このテーブルはオブジェクトにマップされていません。私はほとんどの場合、次のように単純な SQL クエリを実行します。
public List<User> getUsersByGroupId(long groupId) {
List<User> users = new ArrayList<User>();
String query = "select USERGROUPS.USER_ID from USERGROUPS where USERGROUPS.GROUP_ID = ?1";
Query q = getEntityManager().createNativeQuery(query, Long.class);
q.setParameter(1, groupId);
List<Long> userIds = new ArrayList<Long>();
usersIds.addAll(q.getResultList());
for (Long id : userIds) {
users.add(getUser(id));
}
return users;
}
すべて正常に動作します。
これで、USERS テーブルのユーザーのサブセットを使用する新しいアプリケーションができました。
計画は、MYAPP_USERS という新しいテーブルを追加することです (既存のテーブルを変更したくないため)。このテーブルは、MYAPP にリストするユーザーの USER_ID という 1 つの列で構成されます。
私の質問は、MYAPP_USERS テーブルにあるグループのメンバーのみを返すようにクエリを変更する方法です。
つまり、どうすればいいですか:
String query = "select USERGROUPS.USER_ID from USERGROUPS where USERGROUPS.GROUP_ID = ?1 and WHERE ?1 IS IN MYAPP_USERS";
?
どんな助けでも大歓迎です!