我的DAO中有一个查询Oracle数据库的方法,它在应用程序中工作正常。但是,对于测试,我们使用Hsqldb并使用Spring-junit进行测试。同样的方法在测试期间返回错误,因为到目前为止我看到HSQL不支持子查询,所以我得到了:
引起:org.hsqldb.HsqlException:意外令牌:需要START:)
在这种情况下你能帮我解决一下这个问题吗?可以使用Spring来模拟这个方法,但是没有真正进行调用但是通过配置给我一些预定义的结果?
非常欢迎任何建议!
以下是方法:
private Long getRootParent(Long id) {
StringBuilder sqlQuery = new StringBuilder();
sqlQuery.append("SELECT ID FROM ");
sqlQuery.append(" ( SELECT MAX(level) , ff.ID FROM FOREF_FUND ff ");
sqlQuery.append(" START WITH ff.ID = ? ");
sqlQuery.append(" CONNECT BY PRIOR ff.PARENT_FK = ff.ID ");
sqlQuery.append(" GROUP BY ff.ID ORDER BY MAX (level) DESC ) ");
sqlQuery.append(" where rownum = 1 ");
SQLQuery query = this.createSQLQuery(sqlQuery.toString());
query.setParameter(0, id);
List result = query.list();
if (result != null && !result.isEmpty()) {
return ((BigDecimal) result.get(0)).longValue();
}
return null;
}