복붙노트

[SPRING] `Long을 Spring 5에서 Example <S>`로 변환 할 수 없다. JPA findOne ()

SPRING

`Long을 Spring 5에서 Example `로 변환 할 수 없다. JPA findOne ()

나는 인자가 일치하지 않는다. Long은 아래 코드의 findOne 호출에서 Example 로 변환 할 수 없습니다.

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

위의 코드는 Spring 5와 Spring Boot 2로 변환 중입니다. 원래의 Spring 4 및 Spring Boot 1 응용 프로그램에서 정상적으로 작동합니다.

어떤 아이디어를 위의 코드를 변환해야합니까?

해결법

  1. ==============================

    1.Spring 5와 Spring 데이터 JPA 2.0.0.M3의 일부로, CrudeRepository에서 findOne 메소드가 QueryByExampleExecutor의 메소드로 제거 된 것을 볼 수 있습니다. 따라서 Optional findById (ID arg0);로 변경하는 것이 더 좋습니다. findOne 메서드 대신 아래를 찾으십시오 :

    Spring 5와 Spring 데이터 JPA 2.0.0.M3의 일부로, CrudeRepository에서 findOne 메소드가 QueryByExampleExecutor의 메소드로 제거 된 것을 볼 수 있습니다. 따라서 Optional 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/

  2. ==============================

    2.findOne () 대신 getOne ()을 사용할 수도 있습니다.

    findOne () 대신 getOne ()을 사용할 수도 있습니다.

  3. from https://stackoverflow.com/questions/45582133/getting-long-cannot-be-converted-to-examples-in-spring-5-jpa-findone by cc-by-sa and MIT license