0

我的 DAO 中有一个查询 Oracle 数据库的方法,它在应用程序中运行良好。但是对于测试,我们使用 Hsqldb 并使用 Spring-junit 进行测试。相同的方法在测试期间返回错误,因为据我所知 HSQL 不支持子查询,所以我得到:

引起:org.hsqldb.HsqlException:意外令牌:需要启动:)

你能帮我谈谈在这种情况下如何进行吗?是否可以使用 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;
}
4

0 回答 0