使用 Spring Boot + JPA + Hibernate + PostgreSQL 进行 CRUD 操作
请是这个主题的新手。我正在尝试创建一个 CRUD Api。一切正常,但我无法使用 JpaRepository 获取 UPDATE 方法。我构建项目时没有错误。
我尝试将特定的 createCustomer 方法编码到我的 customerRepository 中,但仍然不起作用
但是当我用 Maven 运行它时,我收到此错误:
Spring data Repository 主要使用方法名称。它根据方法名称创建查询。例如,在您的存储库界面中,您有一个方法
findByUserId
。即使您没有编写任何查询,这也将起作用。怎么办?findBy
之后指定的字段(在您的情况下为 UserId
)。但在编译时,它会检查您是否提供了有效的字段,以便它可以准备正确的查询。它通过检查该字段的实体类(在您的情况下是Customer
)来实现这一点。
注意:请记住,实体中的字段称为
userId
,但存储库中的方法名称称为 UserId
。
保存、删除方法之所以有效,是因为您正在扩展 JPARepository 类(该类又扩展了其他类),该类具有这些方法。所以它开箱即用。
但是,当您编写任何超类中不存在的某些方法时,spring-data 将尝试按照我之前指定的方式自行制定查询。因此,当您编写像
updateCustomer
这样不在任何超类中的方法时,它会尝试在实体类中查找名为 updateCustomer 的字段,但会失败,因为它找不到,因此出现异常。
因此,如果您想声明或执行类似的操作,您可以通过使用
@Query(....)
注释此类方法并在其中提供正确的查询来完成此操作。
@Query(update customer set ..........)
Customer updateCustomer(Customer customer)
希望它清楚。
不,它对我不起作用,我已经尝试了很多次查询注释,但最终失败了