我有一个spring-boot
服务,我正在编写单元测试。
该服务作为API的一部分执行以下方法。我通过Rest Client手动测试了API,我发现它可以工作。
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抱怨这个在MySQL中工作正常的sql。
由于
答案 0 :(得分: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 = ?)