spring-boot - 使用 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
查询字符串
解决方案
你应该得到这样的东西:
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
将不再突出显示。
推荐阅读
- rest - grails 重定向到错误的 url
- python - 如何在不调用 API 的情况下从 DRF 中的 ModelViewSet 获取数据
- xml - 如何在 Python 中获取和验证日志文件中的 xml 内容?
- java - Checkmarx - 本机查询的资源访问授权不正确
- c++ - C ++递归地反转字符串并引发异常:访问冲突读取位置
- javascript - React Native 承诺和队列
- django - 在 Django 中使用每小时执行的代码
- c++ - 当我 CTRL+C 时,为什么 mingw-w64 mintty 不向我的程序发出信号()?
- python-3.x - 如何从 keras 中的张量中提取非零值
- python - 电话号码的 Python 正则表达式表现得很奇怪