gpt4 book ai didi

java - JpaRepository 在角色列表中查找具有角色的用户

转载 作者:行者123 更新时间:2023-11-30 06:49:55 26 4
gpt4 key购买 nike

我使用 SpringHibernateJpaRepository 作为数据库存储库。

我有两个用于用户存储的类:

@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 */
}

如您所见,用户可以分配多个角色。因此,user1 可以拥有 ADMINMEMBER 角色,而 user2 只能拥有 MEMBER 角色。

我希望具有 ADMIN 角色(除其他外)的用户可以列出数据库中的所有用户(JpaRepository findAll() 方法就足够了)但仅具有 MEMBER 角色的用户只能列出具有 MEMBER 角色的用户。

如何在JpaRepository中编写方法来实现这一点?我尝试了以下一些但不起作用:

List<User> findByRoles_RoleIn(Collection<Role> roles);

List<User> findByRoles_Role(Role role);

也许一些自定义@Query

最佳答案

如果您可以进行自定义查询,请尝试以下操作:

@Query( "select u from User u inner join u.roles r where r.role in :roles" )
List<User> findBySpecificRoles(@Param("roles") List<Role> roles);

关于java - JpaRepository 在角色列表中查找具有角色的用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42113939/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com