使用Spring-Junit4在HsqlDb中运行的本机查询

时间:2015-07-08 15:00:44

标签: java spring hsqldb spring-junit

我的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;
}

0 个答案:

没有答案