当前位置: 首页 > 知识库问答 >
问题:

Spring数据JPA更新查询(DML操作不支持)

翟新
2023-03-14

我在springdatajpa中执行更新查询时遇到问题。这是存储库层中的代码:

@Transactional
@Modifying
@Query("update CustomerTransaction ct set ct.amountPayment =:trnAmount WHERE ct.loanAccount.id=:loanAccountId AND ct.paymentTerm=:paymentTerm")
List<CustomerTransaction> updateCurrentCustomerTransaction(@Param("loanAccountId") long loanAccountId, 
                                                            @Param("paymentTerm") int paymentTerm, 
                                                            @Param("trnAmount") BigDecimal trnAmount); 

如您所见,我已经添加了@修改注释,但它仍然抛出“不支持DML操作”的错误,我正在使用Hibernate 5.4。非常感谢任何帮助。

共有2个答案

凌华奥
2023-03-14

update SQL查询通常返回已更新行的计数,因此如果要捕获该值,则需要添加int作为返回类型,否则可以使用void

姬向明
2023-03-14

您需要将方法的返回类型设置为valint

 类似资料:
  • 这以前被问过一次,但解决方案并没有解决问题。我正在创建一个JUnit测试: 上述测试调用的查询是: 错误:

  • 我正在尝试更新数据库中的记录,但收到此错误 这是我的hql尝试 经过研究,我在方法的顶部添加了@修改注释,但错误仍然存在。请问怎么了?

  • 问题内容: 我写了一个查询来删除我的扩展接口中的某些对象,但是当我执行查询时,它会抛出异常!谁能为我解释一下? 查询: 我收到了此错误,请问,请为我解释一下,谢谢大家:) 例外: 问题答案: 尝试这个: 每当您尝试修改db中的记录时,都必须将其标记为@Transactional和@Modifying,这将指示Spring可以修改现有记录。 存储库方法必须为空,否则将不断抛出异常。

  • 我已经编写了一个查询来删除扩展接口中的一些对象,但是当我执行查询时,它会抛出一个异常!谁能给我解释一下吗? 查询: 我犯了这个错误,请任何人帮我解释一下,谢谢大家:) 例外情况:

  • 嗨,我使用的是Spring启动和Spring数据,我想从数据库中获取数据的基础上的id,但我不能检索它。我得到这个错误"异常": "org.springframework.dao.InvalidDataAccessApiUsageExctive","消息":"org.hibernate.hql.internal.QueryExcutionRequest estExctive:不支持DML操作[Up

  • 当我使用以下HQL时,我得到了DML操作不支持的错误