使用SpringBoot+SpringData 完成修改数据时 出现错误
Caused by: javax.persistence.TransactionRequiredException: Executing an update/delete query
at org.hibernate.internal.AbstractSharedSessionContract.checkTransactionNeededForUpdateOperation(AbstractSharedSessionContract.java:409)
at org.hibernate.query.internal.AbstractProducedQuery.executeUpdate(AbstractProducedQuery.java:1601)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.orm.jpa.SharedEntityManagerCreator$DeferredQueryInvocationHandler.invoke
代码非常简单
@Query("update Users set uname = ?1 where id = ?2")
@Modifying//要执行一个更新操作
void updateUser(String uname,Integer id);
后来发现 自定义的查询操作需要事物 加持 在原有代码上 加上事物的注解就ok了
@Query("update Users set uname = ?1 where id = ?2")
@Modifying//要执行一个更新操作
@Transactional
void updateUser(String uname,Integer id);
编译通过 可以执行