【发布时间】:2018-08-19 19:27:39
【问题描述】:
我的应用程序出错,因为我使用了 findOne() 方法。下面是我的简单代码。在 User 类中,我的 id 是 String email,这就是我试图在我的类 UserService 中使用的 id,如下所示:
public User findUser(String email){
return userRepository.findOne(email);
}
但我有这个错误:
接口 org.springframework.data.repository.query.QueryByExampleExecutor 中的方法 findOne 不能应用于给定类型;
必需:org.springframework.data.domain.Example
找到:java.lang.String
原因:无法推断类型变量 S (参数不匹配;java.lang.String 无法转换为 org.springframework.data.domain.Example)
用户类别:
@Entity
@Data
@Table(name = "User")
public class User {
@Id
@Email
@NotEmpty
@Column(unique = true)
private String email;
@NotEmpty
private String name;
@NotEmpty
@Size(min = 5)
private String password;
@OneToMany(mappedBy = "user", cascade = CascadeType.ALL)
private List<Task> tasks;
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "USER_ROLE", joinColumns = {
@JoinColumn(name = "USER_EMAIL", referencedColumnName = "email")
}, inverseJoinColumns = {@JoinColumn(name = "ROLE_NAME", referencedColumnName = "name")})
private List<Role> roles;
}
和用户存储库:
public interface UserRepository extends JpaRepository<User, String> {
}
【问题讨论】:
-
异常引用
org.springframework.data.domain.Example的事实让我觉得你在你的一些示例代码中留下了一些东西。环顾四周并仔细检查您的配置。搜索单词Example,看看你找到了什么 -
CrudRepository 中不再有 findOne(ID) 方法。使用 findById(ID)。阅读 javadoc。
标签: java spring hibernate spring-boot spring-data-jpa