一尘不染

~~在Spring 5 JPA findOne()中~~ 获取`Long无法转换为 ~~Example`~~

spring-boot

~~~~

我在argument mismatch; Long cannot be converted to Example<S>下面的代码中找到了findOne调用:

public Optional<AuditEvent> find(Long id) {
    return Optional.ofNullable(persistenceAuditEventRepository.findOne(id))
        .map(auditEventConverter::convertToAuditEvent);
}

上面的代码将转换为Spring 5和Spring Boot2。在原始的Spring 4和Spring Boot 1应用程序中,它可以正常工作。

任何想法我需要将上面的代码转换为?


阅读 483

收藏
2020-05-30

共1个答案

一尘不染

~~~~

由于Spring 5和Spring数据JPA 2.0.0.M3的一部分,我可以看到findOne法中删除 CrudRepository 到一个在
QueryByExampleExecutor 所以最好是变化Optional<T> findById(ID arg0);的,而不是findOne方法,请在下面找到:

@NoRepositoryBean
public interface CrudRepository<T, ID> extends Repository<T, ID> {
    <S extends T> S save(S arg0);

    <S extends T> Iterable<S> saveAll(Iterable<S> arg0);

    Optional<T> findById(ID arg0);

    boolean existsById(ID arg0);

    Iterable<T> findAll();

    Iterable<T> findAllById(Iterable<ID> arg0);

    long count();

    void deleteById(ID arg0);

    void delete(T arg0);

    void deleteAll(Iterable<? extends T> arg0);

    void deleteAll();
}

QueryByExampleExecutor

public abstract interface QueryByExampleExecutor<T> {
    public abstract <S extends T> S findOne(Example<S> paramExample);

    public abstract <S extends T> Iterable<S> findAll(Example<S> paramExample);

    public abstract <S extends T> Iterable<S> findAll(Example<S> paramExample, Sort paramSort);

    public abstract <S extends T> Page<S> findAll(Example<S> paramExample, Pageable paramPageable);

    public abstract <S extends T> long count(Example<S> paramExample);

    public abstract <S extends T> boolean exists(Example<S> paramExample);
}

检查QueryForExampleExecutor上的文档:

https://docs.spring.io/spring-
data/jpa/docs/2.0.0.RC2/reference/html/

2020-05-30