我有一个带有 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。
所以我的问题是,如何修改查询以仅返回 MYAPP_USERS 表中的组成员?
也就是说,我该怎么做:
String query = "select USERGROUPS.USER_ID from USERGROUPS where USERGROUPS.GROUP_ID = ?1 and WHERE ?1 IS IN MYAPP_USERS";
?
任何帮助是极大的赞赏!