有一个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;
}
答案 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
}