如何查找具有相同角色的用户

时间:2020-09-28 20:29:28

标签: java

有一个USER实体,它有一个ROLE列,可以是:ADMIN,TENANT,LANDLORD。我使用邮递员发出请求以输出所有TENANTS,如何从USER中选择租户?

当我第一次想经历所有角色并找到合适的角色时,我在做正确的事情吗? 然后将选定的添加到新列表。 然后浏览此表并输出用户ID所请求的表(此处需要帮助)。

我有这个选择:

@GetMapping("/{id}")
    @PreAuthorize("hasAuthority('user:read')")
    public User landlordGet(@PathVariable(value = "id") Long id) {
        List<User> sort = userRepository.findAll();
        List<User> res = new ArrayList<>();
        for (User us: sort) {
            if (us.getRole().equals(Role.TENANT)){
                res.add(us);
            }
        }
        ...

        return user;
    }

1 个答案:

答案 0 :(得分:2)

当我第一次想经历所有角色并找到合适的角色时,我在做正确的事情吗?然后将选定的添加到新列表。然后浏览此表并输出用户ID所请求的表(此处需要帮助)。

不是,不是真的,正如注释中已经提到的那样,可以在SQL /数据库级别完成太多的工作。

注意:您应该从List<User>那里获得userRepository.findByRole(Role.TENANT);

由于id是来自请求的参数,因此尚不清楚要在此实现什么。

如果我理解正确,那么您想执行以下操作:
获取具有给定ID的用户,并检查该角色是否为租户。

更新:

如果您想先使用角色,然后再按ID进行过滤,请尝试:

List<User> users = userRepository.findByRole(Role.TENANT);
Optional<User> optionalUser = users.stream().filter(user -> user.getId().equals(id)).findFirst();
// Check for present or handle the missing case

更新2:

所有租户:

List<User> users = userRepository.findByRole(Role.TENANT);

具有给定ID和可能租户的用户:

List<User> users = userRepository.findByRole(Role.TENANT);
Optional<User> optionalUser = users.stream().filter(user -> user.getId().equals(id)).findFirst();
// Check for present or handle the missing case
if (optionalUser.isPresent()) {
  // tenant user with given id exists - handle it
}