首页 > 解决方案 > 使用 Spring Boot 删除表

问题描述

我想drop使用 spring JPA (Database-Postgres )

这是我的代码:

public void executeDropTable(String tableName){

    String query = "DROP TABLE IF EXISTS :tableName";

    entityManager.createQuery(query)
            .setParameter("tableName", tableName)
            .executeUpdate();

}

但在 IntelliJ 中显示错误为'DROP' unexpected查询字符串

在此处输入图像描述

标签: spring-bootjpaspring-data-jpaentitymanager

解决方案


你应该得到这样的东西:

java.lang.IllegalArgumentException:org.hibernate.hql.internal.ast.QuerySyntaxException:意外令牌:DROP 靠近第 1 行,第 1 列 [DROP TABLE webinar_speakers]

DROP语句不是有效的 HQL。

请改用本机查询,不要忘记@Transactional

@Transactional
public void executeDropTable(String tableName) {
    // ...
    entityManager.createNativeQuery(...) // ...
}

最有可能突出显示的事实DROP来自 IntelliJ 的 Spring Data 插件,它“知道”DROP在这种情况下无效。如果您使用createNativeQuery(...) DROP将不再突出显示。


推荐阅读