Собственный запрос не выполняется в 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;
}