개발/Spring

[Spring] Spring WebFlux reactive mongo PropertyReferenceException 해결

hojak99 2018. 6. 2. 02:41

우선 필자는 Spring WebFlux 에 reactive mongo 를 사용 중이었다. 그리고 UserRepository 라는 인터페이스에 ReactiveCrudRepository<> 클래스를 상속 받게 해놓았다.



package com.kjh.hojak.repository;

import com.kjh.hojak.model.User;
import org.springframework.data.repository.reactive.ReactiveCrudRepository;
import reactor.core.publisher.Mono;

public interface UserRepository extends ReactiveCrudRepository <User, String> {

    Mono<User> findByWriter_id(Mono<String> writer_id);
}


위의 코드와 같이 writer_id 를 이용해 User 를 검색하는 메소드를 선언해놓았다.


그리고 해당 메소드를 handler 클래스에서 호출하는 식으로 코드를 작성했는데 다음과 같은 오류가 발생했다.


org.springframework.data.mapping.PropertyReferenceException: No property writer found for type User!


해당 오류를 보면 User 클래스에 writer 라는 프로퍼티를 찾을 수 없다고 한다. 분명 User 클래스에는 writer_id 라는 프로퍼티가 존재한다.


그래서 혹시 몰라서 User 클래스에서 _ (언더바)를 제외하고 writerId 로 프로퍼티 선언해주고 위의 UserRepository 인터페이스에서도 findByWriterId(Mono<String> writerId) 로 메소드를 선언해주니 오류가 해결됐다.


package com.kjh.hojak.repository;

import com.kjh.hojak.model.User;
import org.springframework.data.repository.reactive.ReactiveCrudRepository;
import reactor.core.publisher.Mono;

public interface UserRepository extends ReactiveCrudRepository<User, String> {

    /**
     * WriterId 로 User 찾는 메소드. (언더바는 인식 못 하는 것 같음.)
     * @param writerId
     * @return
     */
    Mono<User> findByWriterId(Mono<String> writerId);
}


후,,

반응형