我正在使用Spring
和Hibernate
作为JpaRepository
数据库存储库。
我有两个用于用户存储的类:
@Entity
public class User {
@Id
private Long id;
private String username;
private String password;
@OneToMany(mappedBy = "user", cascade = CascadeType.ALL)
private List<UserRole> roles;
}
@Entity
public class UserRole {
@Id
private Long id;
@ManyToOne
@JoinColumn(name = "user_id")
private User user;
@Enumerated(EnumType.STRING)
private Role role;
}
public enum Role {
ADMIN,
MEMBER;
/* some others in the future */
}
如您所见User
,可以分配多个角色。所以user1
可以有ADMIN
和MEMBER
角色,user2
只有MEMBER
角色。
我想具有ADMIN
角色的用户(除其他外)可以列出数据库中的所有用户(JpaRepository
findAll()
方法就足够了),但只有MEMBER
角色的用户可以只列出具有MEMBER
角色的用户。
如何编写方法JpaRepository
来实现?我在下面尝试了一些,但它不起作用:
List<User> findByRoles_RoleIn(Collection<Role> roles);
或者
List<User> findByRoles_Role(Role role);
也许有些习俗@Query
?