@Query和@Modifying执行更新操作
@Query与两个名为@ Modifying的annotation一起声明可以定义个性化更新操作,以便在只涉及特定字段更新时最常用。 例如以下所示。
此注释通知jpa,这是一个update或delete操作,必须在更新或删除操作时添加。 否则,将抛出以下异常
org.spring framework.Dao.invaliddataaccessapiusageexception
@modifying//JPA这是一个更新或删除操作,jpql不支持插入操作。 @ query (updateaccountsetname=: name,money=:money, version=: version1where id=: idandversion=: version ' ) intupdateaccountbyversion (@ param (id ) int id 必须把事务放进去,必须把事务放进去,报告以下错误
org.spring framework.Dao.invaliddataaccessapiusageexception注意:
方法的返回值必须是int,指示受语句更新影响的行数
必须在调用方添加事务,如果没有事务,则无法正常执行
jql不支持插入
事务
• Spring Data提供了默认的事务方法。 这意味着所有查询都被声明为只读事务。
对于自定义方法,要更改S pringData提供的事务的缺省方法,请在方法中注释@Transactional声明
进行多个资料库操作时,也应该在同一个事务处理它们,根据层次结构的思想,由于这部分属于业务逻辑层,所以在Service层实现对多个资料库的调用,用合适的方法处理事务