spring 数据 jpa - UsersRepository 没有 属性 找到用户类型的名称
spring data jpa - UsersRepository No property name found for type Users
大家好,希望你们对现在发生的一切都平安无事。
我正在努力处理 spring 数据 jpa 没有 属性 发现异常
错误是 spring 在我 运行 应用程序时找不到用户 :
UsersRepository.findByName(java.lang.String)! No property name found for type Users!
这是我的代码:
这是我的 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;
}
}
这是我的UsersRepository.java
@Repository
public interface UsersRepository extends JpaRepository<Users, Integer> {
Optional<Users> findByName(String userName);
}
最后是 MyUsersDetailsService.java
@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();
}
}
将您的存储库方法名称更改为
Optional<Users> findByUserName(String userName);
因为您没有 属性 调用 name
。
几个建议:
- 将您的实体 class 名称保留为
User
而不是 Users
。 (实体 class 代表 table 中的一条记录,它基本上是 User
)
- 设变量
userName
为username
。 (如果你这样做,那么存储库方法名称将 findByUsername
.
大家好,希望你们对现在发生的一切都平安无事。 我正在努力处理 spring 数据 jpa 没有 属性 发现异常
错误是 spring 在我 运行 应用程序时找不到用户 :
UsersRepository.findByName(java.lang.String)! No property name found for type Users!
这是我的代码:
这是我的 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;
}
}
这是我的UsersRepository.java
@Repository
public interface UsersRepository extends JpaRepository<Users, Integer> {
Optional<Users> findByName(String userName);
}
最后是 MyUsersDetailsService.java
@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();
}
}
将您的存储库方法名称更改为
Optional<Users> findByUserName(String userName);
因为您没有 属性 调用 name
。
几个建议:
- 将您的实体 class 名称保留为
User
而不是Users
。 (实体 class 代表 table 中的一条记录,它基本上是User
) - 设变量
userName
为username
。 (如果你这样做,那么存储库方法名称将findByUsername
.