当我使用@Query时使用命名参数作为方法

时间:2019-05-09 06:08:53

标签: java spring spring-boot jpa spring-data-jpa

我正在使用spring-data-jpa,我想更新一些内容,我在PaySupplierSettleBillRepository中将我的方法注释为

public interface PaySupplierSettleBillRepository extends JpaRepository<PaySupplierSettleBillEntity, Long>,
        JpaSpecificationExecutor<PaySupplierSettleBillEntity> {

    @Modifying
    @Query("update PaySupplierSettleBillEntity p set p.payTime=:payTime,p.paymentOrder=:paymentOrder, p.transferTime=:transferTime, p.transferBank=:transferBank, p.transferOrder=:transferOrder, p.operatorName=:operatorName, p.remark=:remark where p.orderNumber=:orderNumber")
    int updatePayInfo(PaySupplierSettleBillEntity entity);
}

我在启动时遇到异常

Caused by: java.lang.IllegalStateException: Using named parameters for method public abstract xxxxxx

我该如何解决?想。

1 个答案:

答案 0 :(得分:2)

这不是您编写带有命名参数的@Query的方式。在此处(https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.named-parameters)中查看Spring文档中的示例。

如果要提供对象作为参数,则可以执行以下操作。

@Query("UPDATE Entity E SET E.name = :#{#entity.name}")
public void updateEntity(@Param("entity") Entity entity);