티스토리 뷰

Dev/JPA

@OneToMany :: 계층형 + Join

Happy Anko♡ 2017. 6. 8. 11:35

 ※ 부서는 상위 부서정보를 갖고 N명의 멤버 정보를 갖는다 


@Data

@Entity

@Table(name = "dept")

public class Department implements Serializable {

    private static final long serialVersionUID = 1L;


    @Id

    @GeneratedValue

    @Column(name = "dept_id")

    private int deptId;

    

    @Column(name = "pdept_id")

    private int pdeptId;

    

    @Column(name = "mem_id")

    private int memId;

    

    

    @OneToMany(fetch=FetchType.EAGER, cascade = CascadeType.ALL)

    @Fetch(FetchMode.SELECT)

    @JoinColumn(name = "pdept_id")

    private List< Department > children = new LinkedList<>();


    @Id

    @OneToMany(fetch=FetchType.EAGER, cascade = CascadeType.ALL)

    @JoinColumn(name = "sid", referencedColumnName="sid")

    private List<Membermember = new LinkedList<>(); 


// 이게 들어가야 오류가 안난다. 원인은 아직 모름...

    public static long setMember() {

        return serialVersionUID;

    }

}


@Data

@Entity

@Table(name = "member")

public class Member {

    @Id

    @GeneratedValue

    @Column(name = "mem_id")

    private String memId;


    @Column(name = "name")

    private String name;

}


@Repository

public class DepartmentRepository {


@PersistenceContext

private EntityManager entityManager;


public List< Department > findDisplayCategoryList(int deptNo) {

QDepartment department = QDepartment.department;

QMember member = QMember.department;


JPAQuery query = new JPAQuery(entityManager);

query.from(department.department);

query.where(department.pdeptId.eq(deptNo));

query.join(department.member, member);


return query.list(QDepartment.department);

}

}


원하는 결과를 얻는다! 


하지만 이 또한 쿼리는 N+1번 실행되고.... 로컬에서 실행시 세번 호출하면 OutofmemoryException을 만난다.

그냥 mybatis 쓸까.. 하는 고민을 일주일째 하고있지만.. 

다른 방법을 찾아봐야지!


아무래도 이렇게 닥치는대로 개발은 좋지 않은것같다.


'Dev > JPA' 카테고리의 다른 글

@OneToMany :: 계층형  (0) 2017.06.05
[JPA] OneToMany 오류  (1) 2017.03.21
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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 31
글 보관함