使用 Spring 引导删除 table

DROP a table using Spring Boot

我想使用 spring JPA(数据库- Postgres

在我的数据库上执行 drop table 查询

这是我的代码:

public void executeDropTable(String tableName){

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

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

}

但在 IntelliJ 中,查询字符串

显示错误 'DROP' unexpected

EntityManager.createQuery 将不能用于 DML 语句。使用 EntityManager.createNativeQuery。

你应该得到这样的东西:

java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: DROP near line 1, column 1 [DROP TABLE webinar_speakers]

DROP 语句是无效的 HQL。

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

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

突出显示 DROP 的事实很可能来自 IntelliJ 的 Spring 数据插件,其中 "knows" DROP 在此上下文中无效。如果您使用 createNativeQuery(...) DROP 将不再突出显示。