为了账号安全,请及时绑定邮箱和手机立即绑定

PersonRepository 类型未定义方法 findOne(Long)

PersonRepository 类型未定义方法 findOne(Long)

慕的地6264312 2023-04-19 16:47:40
我正在尝试使用 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 不能为空。

返回:对具有给定标识符的实体的引用。


查看完整回答
反对 回复 2023-04-19
?
皈依舞

TA贡献1851条经验 获得超3个赞

请检查您使用的 Spring 版本。可能是你的findOne被替换了findById

因此,您的存储库将变为:

public Person findByEmail(String email);
     public Person findById(Long id);


查看完整回答
反对 回复 2023-04-19
  • 2 回答
  • 0 关注
  • 107 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信