SQL-запрос прекрасно работает в MySQL, но не работает в HSQL с BadSqlGrammarException в тесте с весенней загрузкой

0

У меня есть служба 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)});
    } 

когда я пишу unit-тест, который использует 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.

Спасибо

  • 0
    У каждого БД есть свой синтаксис. Ваше утверждение, вероятно, тоже потерпит неудачу в SQL Server или Oracle. Прочитайте документацию по HSQL.
Теги:
spring-boot
unit-testing
hsqldb

1 ответ

0

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню