sql查询在mysql中工作正常,但在hsql中失败,在spring boot测试中出现badsqlgrammarexception

k4ymrczo  于 2021-06-24  发布在  Mysql
关注(0)|答案(1)|浏览(448)

我有一个 spring-boot 我正在编写单元测试的服务。服务作为api的一部分执行以下方法。我通过rest客户机手动测试了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抱怨这个sql在mysql中运行良好。
谢谢

js5cn81o

js5cn81o1#

不支持此操作,因为它使用联接进行删除。hsqldb语法如下:

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

相关问题