次のような階層データ構造があります。ノードは次のように親ノードにマップされます。
@Entity
public class Node implements Serializable {
@Id
private long id;
@Column(name="PARENT_ID")
private Long parentId;
@OneToMany
@JoinColumn(name="PARENT_ID")
public List<Node> children = new LinkedList<Node>();
}
たとえば、次のデータがあるとします。
[A]
/ \
/ \
/ \
[B] [C]
/ \ \
/ \ \
[D] [E] [F]
\
\
[G]
ここで、JPA CriteriaBuilder で動的クエリを構築して、任意のノードをクエリし、その子の結果も返すことができるようにしたいと考えています。たとえば、B をクエリすると、次の結果が得られます。
- B
- D
- え
- G
そして、E をクエリすると、次のようになります。
-E -G
等々...