0

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;
}
4

0 に答える 0