Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.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
Spring boot spring数据jpa-UsersRepository未找到类型用户的属性名称_Spring Boot_Spring Security_Spring Data Jpa_Repository - Fatal编程技术网

Spring boot spring数据jpa-UsersRepository未找到类型用户的属性名称

Spring boot spring数据jpa-UsersRepository未找到类型用户的属性名称,spring-boot,spring-security,spring-data-jpa,repository,Spring Boot,Spring Security,Spring Data Jpa,Repository,大家好,希望现在发生的一切都安全。 我正在努力处理spring数据jpa未发现任何属性异常 错误是spring在我运行应用程序时找不到用户: UsersRepository.findByName(java.lang.String)! No property name found for type Users! 这是我的密码: 这是my users.java,它包含数据库的所有字段 @Entity @Table(name = "user") public class Users { @

大家好,希望现在发生的一切都安全。 我正在努力处理spring数据jpa未发现任何属性异常

错误是spring在我运行应用程序时找不到用户:

UsersRepository.findByName(java.lang.String)! No property name found for type Users!
这是我的密码:

这是my users.java,它包含数据库的所有字段

@Entity
@Table(name = "user")
public class Users {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "user_id")
    private int id;

    @Column(name = "login")
    private String userName;

    @Column(name = "password")
    private String password;

    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
    @JoinTable(name = "user_role", joinColumns = @JoinColumn(name = "user_id"), inverseJoinColumns = @JoinColumn(name = "role_id"))
    private Set<Role> roles;

    public Users() {
    }

    public Users(Users users){

        this.id=users.getId();
        this.userName=users.getUserName();
        this.password=users.getPassword();
        this.roles=users.getRoles();
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUserName() { return userName; }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public Set<Role> getRoles() {
        return roles;
    }

    public void setRoles(Set<Role> roles) {
        this.roles = roles;
    }
}
最后是MyUsersDetailsService.java


将存储库方法名称更改为

可选findByUserNameString用户名

因为您没有名为name的属性

几点建议:

将实体类名称保留为User而不是Users。实体类表示表中的一条记录,它基本上是一个用户 让变量userName为userName。如果这样做,那么存储库方法名称将为findByUsername。
将存储库方法名称更改为

可选findByUserNameString用户名

因为您没有名为name的属性

几点建议:

将实体类名称保留为User而不是Users。实体类表示表中的一条记录,它基本上是一个用户 让变量userName为userName。如果这样做,那么存储库方法名称将为findByUsername。
@Repository
public interface UsersRepository extends JpaRepository<Users, Integer> {
    Optional<Users> findByName(String userName);
}
@Service
public class MyUserDetailsService implements UserDetailsService {

    @Autowired
    private UsersRepository usersRepository;

    @Override
    public UserDetails loadUserByUsername(String userName) throws UsernameNotFoundException {
       Optional<Users> optionalUsers = usersRepository.findByName(userName);

        optionalUsers
                .orElseThrow(() -> new UsernameNotFoundException(userName+"Utilisateur Introuvable!"));
        return optionalUsers
                .map(MyUserDetails::new).get();

    }
}