java - 如何在 SpringBoot 中将管理员电子邮件作为列表返回
问题描述
用户可以有多个角色。但是我怎样才能用一个列表返回所有管理员用户呢?我尝试了类似的解决方案,但与我的相比,他的解决方案有所不同
使用请求管理器;选择users
。username
从request_manager
。users
加入 users_roles ON users.id=users_roles.user_id WHERE role_id=2;
此查询将返回我在 SQL 中需要的内容,但我不知道如何让它在 springboot 中返回。如果有其他更好的方法,我很高兴知道。
User.java(实体)
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(unique = true)
private String username;
private String password;
private String name;
private String surname;
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(
name = "users_roles",
joinColumns = @JoinColumn(name = "user_id"),
inverseJoinColumns = @JoinColumn(name = "role_id")
)
private Set<Role> roles = new HashSet<>();
@OneToMany(mappedBy = "user")
@ToString.Exclude
private List<RequestEntity> requestEntities;
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || Hibernate.getClass(this) != Hibernate.getClass(o)) return false;
User user = (User) o;
return Objects.equals(id, user.id);
}
@Override
public int hashCode() {
return 0;
}
public void setRoles(Set<Role> roles) {
this.roles = roles;
}
public void addRole(Role role) {
this.roles.add(role);
}}
Role.java(实体)
@Entity
@Table(name = "roles")
public class Role {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column(nullable = false, length = 45)
private String name;
public Role() { }
public Role(String name) {
this.name = name;
}
public Role(Integer id, String name) {
this.id = id;
this.name = name;
}
public Role(Integer id) {
this.id = id;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return this.name;
}}
UserRepository.java (repo)
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
@Query("SELECT u FROM User u WHERE u.username = ?1")
User findByUsername(String username);
}
解决方案
我建议试试这个:
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
List<User> findAllByRole_Id(Integer roleId);
}
推荐阅读
- sql - SQL:搜索正确的记录组
- windows - CMake 在 Windows 上使用 MSYS2/mingw64 “找不到 OpenSSL”
- python - 模块化代码python时的未知库
- r - 当每年有不同的观察数字时,按价格指数 (CPI) 缩小数字
- python-3.x - 对于 pandas,为什么 `DataFrame(foo) is foo` = False?
- jquery - 在 Angular 7 中监听多个元素事件
- csv - 如何使用 csv 或 txt 文件中的 X、Y、Z 坐标绘制一条线?
- jquery - 如果 JQuery 不存在输入,如何添加?
- reactjs - 将上下文传递给自定义钩子或在自定义钩子中调用 useContext 更好吗?
- c - 使用 Meson 在 Windows 上构建和运行 GTK 应用程序