当前位置: 首页 > 知识库问答 >
问题:

如何在JPA标准查询中使用Oracle的Connect by子句?

华君浩
2023-03-14

我想在使用jpa条件的查询中显示父子关系。但是我一直在学习如何设置通过表达式连接

ReadAllQuery raQuery = JpaHelper.getReadAllQuery(transquery);
raQuery.setHierarchicalQueryClause(startswith, connectBy, order by);

其中,transquery是由具有多个选择和多个联接的criteriaQuery生成的

我想如下所示显示父事务及其子事务,但在条件查询中使用


    select t0.state,t4.name,t7.money from transaction t0 
    LEFT OUTER JOIN transactionAgents t4 ON (t4.TRANSID = t0.ID)
    LEFT OUTER JOIN AgentReference t7 on  t7.id=t4.agentid
    where t0.transdate>'10-july-2014' and t0.circle=10
    connect by prior t0.id=t0.parent ORDER BY t0.LAST_MODIFIED ASC, t0.ID DESC

共有1个答案

唐俊英
2023-03-14

ReadAllQuery。setHierarchicalQueryClause()是Eclispelink特有的功能,该方法的javadoc对要传递的所有方法参数都有很好的描述:

Expression startWith = builder.get("id").equal(new Integer(100));
//can be any expression which identifies a set of employees
Expression connectBy = builder.get("managedEmployees");
//indicated the relationship that the hierarchy is based on, must be self-referential
Vector orderBy = new Vector();
orderBy.addElement(builder.get("startDate"));
readAllQuery.setHierarchicalQueryClause(startWith, connectBy, orderBy);
//This query would generate SQL like this:
//SELECT * FROM EMPLOYEE START WITH ID=100 CONNECT BY PRIOR ID = MANAGER_ID ORDER SIBLINGS BY START_DATE
 类似资料:
  • 问题内容: 所以我试图解决这个问题,但似乎最后一行(检查)不允许在其中进行子查询。有什么办法可以使Oracle工作吗? 这是错误信息: 问题答案: 由于CHECK约束不能基于查询,因此有三种基本方法可以解决此类问题。 选项1:触发器 最简单的方法是在TANK上放置一个触发器,以查询TANKS并在LEVEL超过CAPACITY时引发异常。但是,这种简单化方法的问题在于,几乎不可能正确处理并发问题。如

  • 问题内容: 我该如何解决Oracle不允许在触发器中进行子查询的局限性。 这是我尝试创建的示例触发器,但由于无法使用子查询而无法创建。 问题答案: 这个触发器可以做到: 我假设从项目中进行选择将始终找到一行;如果不是,它将引发您可能需要处理的NO_DATA_FOUND异常。

  • 我有2个班: 我试图创建一个带有动态order by和参数的查询,例如:我想在DrcommentsPK时选择所有Drcomments记录。commentPrimaryCode等于1,其顺序为DrcommentsPK。注释第二代码。这就是我尝试的: 问题是我得到的结果列表没有按commentSecondaryCode desc顺序排序。。 我做错什么了吗?如何做到这一点?如何创建按eMedTable

  • 问题内容: 我到处都在寻找解释,以了解选择语句中的子查询如何工作,但由于解释非常模糊,我仍然无法理解该概念。 我想知道您如何在oracle的select语句中使用子查询以及它的确切输出。 例如,如果我有一个查询,希望显示这些表中员工的姓名及其管理的个人资料数量 员工(EmpName,EmpId) Profile(ProfileId,…,EmpId) 如何使用子查询? 我当时想在select语句中需

  • 我有ORACLE DB和2个表。我需要从表1内部连接表2中选择行,并按ORACLE RowID列排序。要选择,我使用条件查询。要添加我使用的order by语句 在映射中,RowId看起来像 但是hibernate生成错误的sql查询,如 Hibernate从查询中删除别名“this”。因为ORACLE中的所有表都有ROWID列,所以我们有Oracle错误ORA-00918 如何按hibernat

  • 我使用以下JSON结构处理来自Kafka的消息: 我想打印出我收到的内容。这是我已经完成的代码片段: 模式方法: 问题是,我在从Spark编写时不断收到错误: 线程“main”组织中出现异常。阿帕奇。火花sql。AnalysisException:无法解析数据。category\u id'给定的输入列:[JSONTStruct(value)];;'项目['data.category\u id]-子