类型QueryByExampleExecutor <contact>的方法findOne(Example <s>)不适用于参数(Long)

时间:2018-06-25 15:26:34

标签: spring-boot spring-data-jpa spring-data

查找方法不适用于我,但可以在其他项目中正常工作。

import org.springframework.data.jpa.repository.JpaRepository;

import com.example.demo.entities.Contact;

public interface ContactRepository extends JpaRepository<Contact, Long>{

}

在我的控制器中,我打电话找一个,但给予帮助。

@RequestMapping(value="/contact/{id}",method=RequestMethod.GET)
    public Contact getContact(@PathVariable Long id){
        return repo.findOne(id); //here give a error
    }

1 个答案:

答案 0 :(得分:3)

某些CRUD存储库方法在Spring Data中已重命名,并且

public interface CrudRepository<T, ID extends Serializable> extends Repository<T, ID> {
    T findOne(ID id);

是其中之一。现在,您应该使用

public interface CrudRepository<T, ID> extends Repository<T, ID> {
    Optional<T> findById(ID id);

有关重命名了哪些方法的更多信息,请参见此博客improved-naming-for-crud-repository-methods

仍然有一个findOne方法,但这是来自

public interface QueryByExampleExecutor<T> {
    <S extends T> Optional<S> findOne(Example<S> example);

也是SimpleJpaRepository的接口。这就是为什么出现错误的原因,因为此方法等待一个Example作为参数。