Spring/spring boot 및 기타
[SPRING] 몽고 DB @Field 없을때 오류 org.springframework.data.mapping.PropertyReferenceException: No property log found for type
곰돌이쿤
2020. 10. 26. 22:49
반응형
스프링부트 2.3.3 을 쓰게되면서 부터 라이브러리 사용법들이 조금 많이 달라졌다.
예를 들어 몽고db 가 있다.
spring-data-mongodb:3.0.0 이후의 버젼이다.
몽고 db 쿼리 사용 예시이다.
Date dateLogStartDate = new Date(); // date 조건검색 시작
Date dateLogEndDate = new Date(); // date 조건검색 종료
Query query = new Query();
query.with(Sort.by(Sort.Direction.DESC, "log_date")); // date 내림차순
Criteria criteria = Criteria
.where("log_date").gte(dateLogStartDate).lte(dateLogEndDate);
query.addCriteria(criteria);
Map<String, Object> result = new HashMap<String, Object>();
List<Test> mongo = null;
long count = mongoTemplate.count(query, Test.class);
log.info( "count : {}", count);
int perPage = 50;
int currentPage = 1;
if(count > 0) {
query.with(Sort.by(Sort.Direction.DESC, "log_date")); // date 내림차순
query.limit(perPage);
query.skip(perPage * (currentPage - 1) );
mongo = mongoTemplate.find(query, Test.class);
}
document 클래스
@Document(collection="test")
public class Test {
private Date log_date;
private String data;
private String text;
}
spring-data-mongodb:3.0.0 이전 버젼에서는 어노테이션을 붙이지 않아도 동작을 했다.
하지만 스프링부트 2.3.0 이후버젼에서 사용하는 spring-data-mongodb:3.0.0 버젼이상은
@Field 어노테이션을 꼭 붙여줘야 한다.
@Document(collection="test")
public class Test {
@Field("log_date")
private Date log_date;
@Field("data")
private String data;
@Field("text")
private String text;
}
@Field 을 붙여주지 않고 쿼리를 조회시 다음과 같은 오류가 생긴다.
org.springframework.data.mapping.PropertyReferenceException: No property log found for type Test!
반응형