使用 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
将不再突出显示。
我想使用 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
将不再突出显示。