Собственный запрос не выполняется в HsqlDb с использованием Spring-Junit4

У меня есть метод в моем 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 ответов

Другие вопросы по тегам