![](/img/trans.png)
[英]how to handle Hierarchical Queries(Oracle) through spring data JPA ? where SQL includes START WITH… CONNECT BY
[英]Hibernate + Spring with Oracle - Use hierarchical query (START WITH + CONNECT BY)
当我尝试执行本机sql查询时遇到问题,该查询在JUnit Test中使用分层条款START WITH和CONNECT BY。
我将说明我遵循的步骤:
我的本机SQL查询如下所示:
SELECT EE.* FROM SEDU_EE_ESTRUCT EE START WITH EE.ID_EE_ESTRUCT = 2 CONNECT BY PRIOR EE.ID_EE_ESTRUCT = EE.ID_EE_ESTRUCT_PARENT;
我已经使用Sql Developer在我的数据库(Oracle 10g)上进行了测试,一切正常。 确实有效。
当我尝试在Java方法(使用Spring,Hibernate和本机查询)中执行它时,就会出现我的问题。 在这种情况下,步骤为:
用我的查询声明一个字符串:
private static final String SQL_RECURSIVE_NODES = "SELECT EE.* " + "FROM SEDU_EE_ESTRUCT EE " + "START WITH EE.ID_EE_ESTRUC = :idNode " + "CONNECT BY PRIOR EE.ID_EE_ESTRUCT = EE.ID_EE_ESTRUCT_PARENT";
使用该字符串创建我的SQLQuery对象:
SQLQuery myQuery = getSessionFactory().getCurrentSession().createSQLQuery(SQL_RECURSIVE_NODES);
只需执行它:
List results = myQuery.list();
但是在这种情况下它不起作用...我得到了Hibernate SQLGrammarException,在跟踪中可以读取:
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: java.sql.SQLException: Unexpected token: START in statement
此错误的原因可能是什么?
我已经解决了 问题是我在JUnit测试中执行查询,并且我们没有使用Oracle DB进行测试,而是使用Hypersonic(ooucchh !!)。 因此,问题在于START WITH和CONNECT BY仅是Oracle数据库的子句。
谢谢大家
问候
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.