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

我正在尝试使用 Spring boot 构建简单的博客应用程序。但是,当我尝试将 findOne 用于我的 service.java 时,现在我遇到了“方法 findOne(Long) 对于类型 PersonRepository 未定义”的问题。下面是什么我做了


我试图在存储库中创建对象,指示 findOne 并保存。但是它没有帮助


PersonRepository.java


package PersonRepository.javaio.javabrains.repository;


import org.springframework.data.repository.CrudRepository;

import org.springframework.stereotype.Repository;


import io.javabrains.Entity.Person;

@Repository

public 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


@Service

public class PersonService {


    @Autowired

    private PersonRepository personRepository;


    public Object findAll(){

        return personRepository.findAll();

    }


    public Person findById(Long id){

        return personRepository.findOne(id);

    }

我希望消除评论块可以解决问题。但是,当我尝试运行该应用程序时,它显示错误


慕的地6264312
浏览 108回答 2
2回答

ibeautiful

最好使用JpaRepository&nbsp;(它扩展了 CRUD 存储库)而不是findOne()你可以使用getOne()或(可选)findById()findById()通过其 id 检索实体。参数:id 不能为空。返回:具有给定 id 的实体或 Optional#empty() 如果没有找到抛出:IllegalArgumentException - 如果 id 为 null。得到一个()返回对具有给定标识符的实体的引用。根据 JPA 持久性提供程序的实现方式,这很可能总是返回一个实例并在首次访问时抛出 javax.persistence.EntityNotFoundException。其中一些会立即拒绝无效标识符。参数:id 不能为空。返回:对具有给定标识符的实体的引用。

皈依舞

请检查您使用的 Spring 版本。可能是你的findOne被替换了findById。因此,您的存储库将变为:public&nbsp;Person&nbsp;findByEmail(String&nbsp;email); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;Person&nbsp;findById(Long&nbsp;id);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java