我正在尝试使用 Spring boot 构建简单的博客应用程序。但是,当我尝试将 findOne 用于我的 service.java 时,现在我遇到了“方法 findOne(Long) 对于类型 PersonRepository 未定义”的问题。下面是什么我做了我试图在存储库中创建对象,指示 findOne 并保存。但是它没有帮助PersonRepository.javapackage PersonRepository.javaio.javabrains.repository;import org.springframework.data.repository.CrudRepository;import org.springframework.stereotype.Repository;import io.javabrains.Entity.Person;@Repositorypublic interface PersonRepository extends CrudRepository<Person,Long>{public Person findByEmail(String email); /* * public Person findOne(Long id); * * public Iterable<Person> findAll(); * * public Person save(Person person); */PersonService.java@Servicepublic class PersonService { @Autowired private PersonRepository personRepository; public Object findAll(){ return personRepository.findAll(); } public Person findById(Long id){ return personRepository.findOne(id); }我希望消除评论块可以解决问题。但是,当我尝试运行该应用程序时,它显示错误
2 回答
ibeautiful
TA贡献1993条经验 获得超5个赞
最好使用JpaRepository
(它扩展了 CRUD 存储库)
而不是findOne()
你可以使用getOne()
或(可选)findById()
findById()
通过其 id 检索实体。
参数:id 不能为空。
返回:具有给定 id 的实体或 Optional#empty() 如果没有找到
抛出:IllegalArgumentException - 如果 id 为 null。
得到一个()
返回对具有给定标识符的实体的引用。根据 JPA 持久性提供程序的实现方式,这很可能总是返回一个实例并在首次访问时抛出 javax.persistence.EntityNotFoundException。其中一些会立即拒绝无效标识符。
参数:id 不能为空。
返回:对具有给定标识符的实体的引用。
皈依舞
TA贡献1851条经验 获得超3个赞
请检查您使用的 Spring 版本。可能是你的findOne
被替换了findById
。
因此,您的存储库将变为:
public Person findByEmail(String email); public Person findById(Long id);
添加回答
举报
0/150
提交
取消