Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Jpa存储库使用HashSet类型查找所有_Java_Spring_Hibernate_Spring Data Jpa_Spring Repositories - Fatal编程技术网

Java Jpa存储库使用HashSet类型查找所有

Java Jpa存储库使用HashSet类型查找所有,java,spring,hibernate,spring-data-jpa,spring-repositories,Java,Spring,Hibernate,Spring Data Jpa,Spring Repositories,在我的Spring Boot应用程序中,我有两个实体用户和权限。有三个参数ROLE_USER、ROLE_ADMIN和ROLE_SYSTEM可作为权限分配给用户,一个用户可以有多个权限。在用户实体中,我创建了连接用户和权限的连接列,因此我可以使用连接表将多个权限分配给用户,实体字段如下所示: @JsonIgnore @ManyToMany @JoinTable( name = "jhi_user_authority", joinColumns = {@JoinColumn(name

在我的Spring Boot应用程序中,我有两个实体用户和权限。有三个参数ROLE_USER、ROLE_ADMIN和ROLE_SYSTEM可作为权限分配给用户,一个用户可以有多个权限。在用户实体中,我创建了连接用户和权限的连接列,因此我可以使用连接表将多个权限分配给用户,实体字段如下所示:

@JsonIgnore
@ManyToMany
@JoinTable(
    name = "jhi_user_authority",
    joinColumns = {@JoinColumn(name = "user_id", referencedColumnName = "id")},
    inverseJoinColumns = {@JoinColumn(name = "authority_name", referencedColumnName = "name")})
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
@BatchSize(size = 20)
private Set<Authority> authorities = new HashSet<>();
因此,现在我必须将查询从findAll更改为findAllByAuthorities(Pageable Pageable,set authorities)。但这不起作用,显示类型转换错误。 如何获取角色为role\u user的所有用户

这是解决方案, 我必须编写一个查询,以便从用户表中获取用户,该用户表的权限是用户角色。为此,我必须在HashSet中传递一个要匹配的字符串

@Query("select users from User users where 'ROLE_USER' member of users.authorities")
Page<User> getAllByAuthoriy(Pageable pageable);
@Query(“从用户中选择用户,其中“角色\用户”是用户的成员。权限”)
页面GetAllByAuthority(可分页);

对于初学者,您不需要默认提供的
findAll
方法。
findAllByAuthorities
的参数顺序错误。
Pageable
参数必须是最后一个。我更新了问题,请检查一下好吗?它显示了java.lang.IllegalArgumentException异常,如何在查询中传递集合?不清楚角色“用户”是一个字符串。权威是一个实体。字符串不能等于实体。发布授权实体,并告诉我们如何在授权中与“角色\用户”进行比较。在任何情况下,您都需要一个join:
从用户u join u.a中选择u,其中a.name='ROLE\u User'
@Transactional(readOnly = true)
public Page<UserDTO> getAllManagedUsers(Pageable pageable) {
return userRepository.findAll(pageable).map(UserDTO::new);
}
@Repository
public interface UserRepository extends JpaRepository<User, Long> {

    Page<User> findAll(Pageable pageable);
}
 @Query("select users from User users where users.authorities = 'ROLE_USER'")
 Page<User> getAllByAuthoriy(Pageable pageable);
@Entity
@Table(name = "jhi_authority")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class Authority implements Serializable {

   private static final long serialVersionUID = 1L;

   @NotNull
   @Size(max = 50)
   @Id
   @Column(length = 50)
   private String name;

   public String getName() {
      return name;
   }

   public void setName(String name) {
      this.name = name;
   }
}
@Query("select users from User users where 'ROLE_USER' member of users.authorities")
Page<User> getAllByAuthoriy(Pageable pageable);