SQL-запрос прекрасно работает в MySQL, но не работает в HSQL с BadSqlGrammarException в тесте с весенней загрузкой - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть spring-boot служба, которую я пишу модульные тесты.Служба выполняет следующий метод как часть API.Я тестировал API вручную через Rest Client, и я мог видеть, как он работает.

 public int doProessing(String name) {
        String sql = "DELETE BS FROM FOO.TABLE1 BS JOIN FOO.TABLE2 BM on BM.SURR_KEY = BS.SURR_KEY WHERE BM.NAME = ?";
        return jdbcTemplate.update(sql, new Object[]{StringUtils.upperCase(name)});
    } 

, когда я пишу модульный тест, использующий HSQL, я получаю следующее исключение.

org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; bad SQL grammar [DELETE BS FROM FOO.TABLE1 BS JOIN FOO.TABLE2 BM on BM.SURR_KEY = BS.SURR_KEY WHERE BM.NAME = ?]; nested exception is java.sql.SQLSyntaxErrorException: unexpected token: BS required: FROM in statement [DELETE BS FROM FOO.TABLE1 BS JOIN FOO.TABLE2 BM on BM.SURR_KEY = BS.SURR_KEY WHERE BM.NAME = ?]

ДонНе понимаю, почему HSQL жалуется на этот SQL, который прекрасно работает в MySQL.

Спасибо

1 Ответ

0 голосов
/ 25 апреля 2018

Это не поддерживается, так как для удаления используется JOIN.Синтаксис HSQLDB ниже:

DELETE FROM FOO.TABLE1 BS WHERE BS.SURR_KEY IN (SELECT BM.SURR_KEY FROM FOO.TABLE2 BM WHERE BM.NAME = ?)
...