DB 테이블에 트리 구조가 저장되어 있습니다. 테이블은 여러 개의 트리를 저장할 수 있습니다. 단일 노드 트리에있는 모든 노드를 반환하는 쿼리가 필요합니다. 다음 사이트를 리소스로 사용했지만 쿼리가 모든 트리의 모든 노드를 PersistenceContext로로드합니다 (전체 테이블을로드하는 사이트가 아닌가?). 나는 그것을하고 싶지 않다, 나는 단지 하나의 나무를 적재하고 싶다. 어떻게해야합니까?단일 트리에서 모든 노드를 가져 오는 JPA 쿼리
나는 JPA 2와 Hibernate를 공급자로 사용하고있다.
OpenJPA 1.2.x select tree structure using JPQL
http://www.tikalk.com/java/load-a-tree-with-jpa-and-hibernate#comment-1821
[업데이트] 나는이 같은 것을 사용할 수 있는지 @bennidi의 제안에 근거하여, 궁금 :
@Entity
public class Node {
private String name;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "rootId")
private Node root;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "parentId")
private Node parent;
@OneToMany(mappedBy = "parent", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@OrderBy("name")
private List<Node> children = new LinkedList<Node>();
}
JPQL 쿼리 :
select distinct n from Node n left join fetch n.children where n.rootId = ROOT_ID
을 비록 부모님과 자식 관계를 유지하기 위해 두 번째 테이블을 만들어야합니까?, 아니면 방금 자기 참조 테이블을 사용하면 괜찮을 것입니다. 이전 버전을 사용하면 약간 더 많은 유지 관리가 필요하고 아마도 좀 더 복잡한 쿼리가 필요할 것 같습니다. 그만한 가치가 있니? 기사에서 다루고있는 문제가 확실하지 않습니다.
이것은 당신이 내게 준 좋은 아이디어입니다 !! 부검을위한 길을 찾았습니까 ?? – azerafati
그리고 여기에서 사용하는 모든 fetchTypes 정보가 기본값입니다! 당신은 그 (것)들을 제거 할 수 있고 모두 동일 할 것입니다 – azerafati