执行原生态的SQL(删除语句)报错了,请大神帮忙看看?
Query query=em.createNativeQuery(sql.toString());
query.executeUpdate();
执行以上代码,会报错
Caused by: javax.persistence.TransactionRequiredException: Executing an update/delete query 展开
SQL的删除语句就是DELETE 语句
DELETE 语句用于删除表中的行。
语法:DELETE FROM 表名称 WHERE 列名称 = 值
删除某行:DELETE FROM 表名称 WHERE 列名称 = 值(删除条件)
删除所有行:可以在不删除表的情况下删除旦御所有的行。这意味着表的结构、属性和索引都是完整的:DELETE FROM 表名 或者:DELETE * FROM 表名 。
通过使用 DROP 语句,可以轻松地删除索引、表和数据库。
DROP INDEX 索引名称
DROP TABLE 表名称
DROP DATABASE 中链数据库名称
不删除表,只删除表中的数据:TRUNCATE TABLE 表名称
文中的错误主要在以下几个方面:
第一,文中所使用的“createNativeQuery”方法只能用于查询,不能用于增删改。
第二,需要启用事务,你在执行“update”中操作
第三,你看一下em中有没有beginTransaction()之类的方法。
1、若你有卖迟孙使用spring,可以在这个方法体上加上注解:@Transactional
2、在执行query.executeUpdate();的之前增加一句em.joinTransation();
方法只能用于查询哈 不能用于增删改
加上注解@Transactional试试看。