如何根据第二个表中的数据限制SQL查询结果?

如何根据第二个表中的数据限制SQL查询结果?,sql,jpa,Sql,Jpa,我有一个带有用户和组表的现有系统。我有用户和组的JPA对象 表USERGROUPS是一个映射,其中用户在哪个组中,这个表没有映射到一个对象,我对它做了一个简单的SQL查询,如下所示: public List<User> getUsersByGroupId(long groupId) { List<User> users = new ArrayList<User>(); String query = "select USERGROUPS.USER_ID

我有一个带有用户和组表的现有系统。我有用户和组的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;
}
?


非常感谢您的帮助

您可以执行以下操作:

select USERGROUPS.USER_ID 
from   USERGROUPS 
where  USERGROUPS.GROUP_ID = ?1 
   AND EXISTS (SELECT * FROM MYAPP_USERS WHERE USER_ID = ?1)

要仅获取在MYAPP_users表中找到的用户的结果, 从该表开始,与用户组进行内部联接,以获取它们的 组标识:

SELECT usergroups.user_ID
FROM myapp_users INNER JOIN usergroups
ON myapp_users.user_ID = usergroups.user_ID
WHERE usergroups.group_ID = ?1
为了规划未来,我将使用列创建一个表app_,而不是myapp表 用户ID和应用ID,然后在查询中指定应用ID:

...
WHERE usergroups.group_ID = ?1
AND app_ID = ?2
...
WHERE usergroups.group_ID = ?1
AND app_ID = ?2