提问者:小点点

方法findOne(Long)未定义为类型的人库[重复]


我正在尝试使用Spring boot构建简单的博客应用程序。然而,现在我遇到了一个问题,当我尝试将findOne用于我的service.java时,findOne(Long)方法未定义

我试图在存储库中创建指示findOne和save的对象。但是没有帮助

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);
    }

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


共2个答案

匿名用户

最好使用JpaRepository(它扩展了CRUD存储库)

您可以使用getOne()findById()代替findOne()(可选)

findById()

通过实体的id检索实体。

参数:id不能为空。

返回:具有给定id的实体,如果没有找到,则返回可选#空()

抛出:IllegalArgumentException-如果id为空。

getOne()

返回对具有给定标识符的实体的引用。根据JPA持久性提供程序的实现方式,这很可能总是返回一个实例并在第一次访问时抛出javax.持久性. EntityNotFoundException。其中一些会立即拒绝无效的标识符。

参数:id不能为空。

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

匿名用户

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

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

public Person findByEmail(String email);


     public Person findById(Long id);