У меня есть служба 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.
Спасибо
Это не поддерживается, поскольку он использует JOIN для DELETE. Синтаксис HSQLDB приведен ниже:
DELETE FROM FOO.TABLE1 BS WHERE BS.SURR_KEY IN (SELECT BM.SURR_KEY FROM FOO.TABLE2 BM WHERE BM.NAME = ?)