【发布时间】:2017-02-08 13:03:27
【问题描述】:
我将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 角色的用户(以及其他角色)可以列出数据库中的所有用户(JpaRepositoryfindAll() 方法就足够了)但只有MEMBER 角色的用户只能列出MEMBER 的用户角色。
如何在JpaRepository 中编写方法来实现?我在下面尝试了一些,但它不起作用:
List<User> findByRoles_RoleIn(Collection<Role> roles);
或
List<User> findByRoles_Role(Role role);
也许是一些自定义的@Query?
【问题讨论】:
标签: java spring hibernate spring-data-jpa spring-repositories