우선 필자는 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);
}
후,,
반응형