블로그 이미지
Max.

calendar

    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30      

Notice

'2015/09/22'에 해당되는 글 1

  1. 2015.09.22 spring roo에서 1:n 관계시 JSONSerializer의 deepSerialize 오류현상
2015.09.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를 사용하면 안된다.



저작자 표시
신고
posted by Max.
prev 1 next