2015. 9. 22. 17:34
개발관련
도메인 객체에서 아래와 같은 관계시
A -> B -> C
1: n 1:n
A 객체만 가져와도 하위 객체 모두 가져오게 하는 방법은 아래와 같이 사용한다.
public String toJsonAll() {
return new JSONSerializer().exclude("*.class").deepSerialize(this);
}
실제 쿼리는 객체와 매핑된 테이블에 대한 outer join으로 데이터를 가져온다.
이때 각 객체와의 관계에 대한 구현체가 Set 또는 List로 할수 있는데, JSONSerializer deepSerialize 메서드에서는 둘의 결과값에 차이가 있다.
@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
private Set<B> bs = new HashSet<B>();
or
@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
private List<B> bs = new ArrayList<B>();
index 가 있는 List는 순회하는 만큼의 row가 들어가게 되고(JSONSerializer의 버그로 보인다), Set은 의도된 row만 들어있다.
따라서 spring roo(1.3.1.R 버전) 를 사용한 JSONSerializer deepSerialize 사용시 1:n 관계에서는 List를 사용하면 안된다.
'개발관련' 카테고리의 다른 글
데이터 생성 (0) | 2017.04.11 |
---|---|
spring roo에서 1:n 관계시 JSONSerializer의 deepSerialize 오류현상 (0) | 2015.09.22 |
spring roo 에서 도메인 하위 객체까지 모두 JSON 으로 보내는 예시 (1) | 2015.09.18 |
spring roo에서 swagger2 연동후 unit test가 실패 할때 (0) | 2015.09.18 |
springfox swagger2 연동 방법 (0) | 2015.09.03 |
Spring Roo에서 java8 사용하기 (0) | 2015.08.07 |
댓글을 달아 주세요