**
SpringData中自定义方法删除整表数据出现报错问题
**
@Test
public void test08(){
ApplicationContext context=
new ClassPathXmlApplicationContext("applicationContext.xml");
StuRepository proxy=context.getBean(StuRepository.class);
proxy.delete();
}
只加@Query注解
public interface StuRepository extends Repository<Student, Integer>{
@Query(nativeQuery=true,value="delete from stu")
void delete();
}
会报错
Hibernate:
delete
from
stu
一月 16, 2021 6:59:45 下午 org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
WARN: SQL Error: 0, SQLState: S1009
一月 16, 2021 6:59:45 下午 org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
ERROR: Can not issue data manipulation statements with executeQuery().
这里需要注意必须加上@Transactional(开启事务)和@Modifying(通知jpa这是一个delete操作,允许修改)
@Transactional
@Modifying
@Query(nativeQuery=true,value="delete from stu")
void delete();
执行成功
mysql> select * from stu;
+----+------+-------------+
| id | age | name |
+----+------+-------------+
| 1 | 23 | wanghanxuan |
| 2 | 23 | rose |
| 3 | 18 | tim |
| 4 | 35 | jim |
| 5 | 30 | jary |
+----+------+-------------+
5 rows in set (0.00 sec)
mysql> select * from stu;
Empty set (0.00 sec)