Message : Type mismatch Require Example<(???…)>
이상한 오류같은 메시지… kotlin 버전충돌 때문에 발생한 적이 있어서 그 부분을 찾았는데 이상해서 찾아보니 SpringData 문제였다.
분석
예전에는 이렇게 썼다.
1 2 3 4 5 6 7 8 |
@Repository public interface SocialRepository extends JpaRepository<SocialEntity, Long> { } --- @Autowired private SocialRepository socialRepository; socialRepository.findOne(ID) |
이렇게 하면 CRUDRepository 내부의 T findOne(ID)가 호출이 됐는데
1 2 3 4 |
@NoRepositoryBean public interface CrudRepository<T, ID extends Serializable> extends Repository<T, ID> { T findOne(ID id); } |
이 부분이 변경됐다.
CRUDRepository에는 Optional(T) findByID(ID)가 들어가 있다.
1 2 3 4 |
@NoRepositoryBean public interface CrudRepository<T, ID> extends Repository<T, ID> { Optional<T> findById(ID id); } |
findOne을 호출하면
1 2 3 |
QueryByExampleExecutor{ <S extends T> Optional<S> findOne(Example<S> example); } |
이녀석이 호출된다.
에러가 날 수 밖에..
처리
코드는 다 바꿔야 한다.
findById(ID).get()
이전코드를 그냥 써야하는 상황에서 쉽게 바꾸려면 이렇게만 해도 되고..
아니면 Optional을 활용하는 방안을 찾을 필요가 있다.
Null처리 문제 때문에 생긴 것 같다