Java 在SpringDataJPA中创建自定义查询的正确方法是什么
我面临一个问题,当我使用自定义查询方法运行spring boot应用程序时,我遇到了一个异常 下面是我的存储库类Java 在SpringDataJPA中创建自定义查询的正确方法是什么,java,spring,spring-data-jpa,Java,Spring,Spring Data Jpa,我面临一个问题,当我使用自定义查询方法运行spring boot应用程序时,我遇到了一个异常 下面是我的存储库类 public interface ProductRepository extends Repository<Product,Integer> { @Query(name = "SELECT p.rate FROM Product p WHERE p.id=:id") public Optional<String> findRateById(@Param("i
public interface ProductRepository extends Repository<Product,Integer> {
@Query(name = "SELECT p.rate FROM Product p WHERE p.id=:id")
public Optional<String> findRateById(@Param("id") int id);
@Modifying
@Query(name = "UPDATE Product p set p.productName=:productName WHERE p.id=:id")
public int updateProductNameById(@Param("id") int id,@Param("productName") String
productName);
}
@Query注释中的name属性确定NamedQuery的使用。 如果要使用命名查询,则应在实体中使用@NamedQuery注释
@Entity
@Table
@NamedQuery(name="updateProduct", query="UPDATE PRODUCT ....")
public class Product
你可以在这里了解更多
如果不想使用namedquery than,只需删除@Query注释中的name属性。package com.spring.data.jpa.repository;导入com.spring.data.jpa.entity.Product;导入com.spring.data.jpa.exception.ProductNotFoundException;导入org.springframework.data.jpa.repository.Modifying;导入org.springframework.data.jpa.repository.Query;导入org.springframework.data.repository.repository;导入org.springframework.data.repository.query.Param;导入java.util.*;您不应该使用name参数,而应该在@Query中使用value参数。i、 e.@Queryvalue=UPDATE Product p set p.productName=:productName其中p.id=:id或@QueryUPDATE Product p set p.productName=:productName其中p.id=:idI beleive Ashish是对的我尝试了@Modifying@QueryUPDATE Product p set p.category=:cat其中p.id=:id intupdateCateById@Paramcat字符串cat,@Paramid整数id;它工作得很好,谢谢,伙计,我的错误是我在@Query注释中添加了name参数,因为这个原因它不工作,我现在删除了它,一切都好了。
@Entity
@Table
@NamedQuery(name="updateProduct", query="UPDATE PRODUCT ....")
public class Product