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



我想在使用jpa标准的查询中显示父子关系。但是纠结于如何设置连接表达式

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

where transquery from criteriaQuery with multiple select and multiple joins

我想显示父和他们的子事务如下,但在标准查询

<>之前从事务t0中选择t1 .state,t4.name,t7.moneyLEFT OUTER JOIN transactionAgents t4 ONtransd = 0. id)LEFT OUTER JOIN AgentReference t7 on t7.id=t4.agentt0的地方。Transdate>'10-july-2014'和t0.circle=10连接前t0.id=t0。父ORDER BY 0。LAST_MODIFIED ASC, 0。ID DESC

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

最新更新