我有下一个存储库:
interface UserRepository extends MongoRepository<User, String> {
Optional<User> findById(@Param("id") String id);
}
当我尝试使用方法 findById() 时,我收到错误
参数org.springframework.data.mapping.Parameter@b84c8964没有名称
我在搜索时找到的唯一解决方案是添加@Param注释,但这对我没有帮助。该问题的原因是什么以及如何解决?
用户实体:
@Document
class User implements UserDetails {
@Id
@NonNull
private String id
@NonNull
@Indexed(unique = true)
private String email
@JsonIgnore
@NonNull
private String password
@NonNull
private String role
@NonNull
private UserInfo userInfo
@Override
Collection<? extends GrantedAuthority> getAuthorities() {
return List.of(new SimpleGrantedAuthority(role))
}
@Override
String getPassword() {
return password
}
@Override
String getUsername() {
return email
}
@Override
boolean isAccountNonExpired() {
return true
}
@Override
boolean isAccountNonLocked() {
return true
}
@Override
boolean isCredentialsNonExpired() {
return true
}
@Override
boolean isEnabled() {
return true
}
void setEmail(@NonNull String email) {
this.email = email
}
void setPassword(@NonNull String password) {
this.password = password
}
void setRole(@NonNull String role) {
this.role = role
}
@NonNull
UserInfo getUserInfo() {
return userInfo
}
void setUserInfo(@NonNull UserInfo userInfo) {
this.userInfo = userInfo
}
@NonNull
String getId() {
return id
}
void setId(@NonNull String id) {
this.id = id
}
@NonNull
String getEmail() {
return email
}
@NonNull
String getRole() {
return role
}
User(String email, String password, String role, UserInfo userInfo) {
this.email = email
this.password = password
this.role = role
this.userInfo = userInfo
}
}
我不确定,但我认为 MongoRepository 已经实现了该方法。您可以尝试从存储库中删除它并直接在您的服务或控制器上使用它吗?