当前位置: 首页 > 面试题库 >

HQL递归,我该怎么做?

柴嘉石
2023-03-14
问题内容

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

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

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

干杯

尼克


问题答案:

您不能使用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
    }

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



 类似资料:
  • 我的java代码中有一些错误。。我试图通过递归找到最小值。。我在上一个索引中的错误。。我注意到,如果上一个索引中的最小数字出现错误消息“java.lang.ArrayIndexOutOfBoundsException:8”。否则,如果最小值不在最后一个索引中,它将返回数组中找到的第一个最小值,并且从不检查其他值。 这是我的代码: 输出 数组中找到的第一个最小数的图像 最后一个索引中最小数字的图像

  • 这是该问题的有效解决方案: 有人能帮我解释一下这个问题和所有的递归调用吗?现在我不明白解决方案是如何构建树节点的。我目前正在这样处理这个问题。 > ConstructMaximumBinaryTree(int[]nums) int maxIndex=getMaxIndex(nums,0,5)因此maxIndex=3。 树节点根=6。 root.left=helper(nums,0,2),因此max

  • 问题内容: 我的网站几乎完成了,除了最后一部分,我需要使图库页面支持ajax才能使用Ajax更改页码。 图库页面视图: Dajax / Dajaxice的记录不是很好…我只需要显示一些图像即可。 问题答案: 这是使用Dajax / Dajaxice的方法,这是为了在Django中简化AJAX: 根据文档安装Dajaxice和Dajax。文档似乎没有提及它,但是您也可以使用,即 pip instal

  • 我想使它从“游戏26”类到“游戏39”类,如果用户经历了从“游戏17”类到“游戏18”类。但如果用户没有通过,要使从“Game26”类到“Game30”类。

  • 我正在编写if-else语句,如果满足某个条件,我希望程序什么也不做。下面的代码显示了我的意思。 如果number等于零,我希望程序保留这个If-else语句,并移动到下一段代码,这段代码在while循环中

  • 邮件列表和网上讨论中似乎经常出现的一个话题是攻读计算机科学学位的优点(或不足)。对于否定的一方来说,一个似乎一再出现的论点是,他们已经编码了一些年了,他们从来没有使用过递归。 所以问题是: 什么是递归? 何时使用递归? 为什么人们不使用递归?