繁体   English   中英

使用Oracle的Hibernate + Spring-使用分层查询(START WITH + CONNECT BY)

[英]Hibernate + Spring with Oracle - Use hierarchical query (START WITH + CONNECT BY)

当我尝试执行本机sql查询时遇到问题,该查询在JUnit Test中使用分层条款START WITH和CONNECT BY。

我将说明我遵循的步骤:

  1. 我的本机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和本机查询)中执行它时,就会出现我的问题。 在这种情况下,步骤为:

  1. 用我的查询声明一个字符串:

     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"; 
  2. 使用该字符串创建我的SQLQuery对象:

     SQLQuery myQuery = getSessionFactory().getCurrentSession().createSQLQuery(SQL_RECURSIVE_NODES); 
  3. 只需执行它:

     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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM