【发布时间】:2021-11-26 22:17:55
【问题描述】:
用户可以有多个角色。但是我怎样才能用一个列表返回所有管理员用户呢?我尝试了类似的解决方案,但与我的不同
使用 request_manager; SELECT users.username FROM 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);
}
【问题讨论】:
-
嗨,“返回列表”是指您需要它在 REST Get 请求响应中吗? @John555
-
不,我需要它在 POST 请求之前返回一个列表,以便只有在发布请求时才能将电子邮件发送给管理员
-
列表 findAllByRoles (EnterCodeHere);我有点需要在回购中添加这样的东西
标签: java spring spring-boot spring-data-jpa spring-data