一尘不染

HQL递归,我该怎么做?

hibernate

我有一个树结构,其中每个Node都有一个父级和一个Set<Node> children。每个节点都有一个String title,我想在其中选择进行查询,Set<String> titles即该节点和所有父节点的标题。如何编写此查询?

单个标题的查询就是这样,但是就像我说的那样,我希望它扩展到整个父母分支。

SELECT node.title FROM Node node WHERE node.id = :id

干杯

尼克


阅读 255

收藏
2020-06-20

共1个答案

一尘不染

您不能使用HQL进行递归查询。看到这个。如前所述,它甚至不是标准的SQL。您有两种选择:

  • 编写特定于供应商的递归本机SQL查询
  • 进行多个查询。例如:
        // obtain the first node using your query
    while (currentNode.parent != null) {
       Query q = //create the query
       q.setParameter("id", currentNode.getParentId());
       Node currentNode = (Node) q.getSingleResult();
       nodes.add(currentNode); // this is the Set
    }

我肯定会选择第二个选项。

2020-06-20