Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在SpringDataJPA中创建自定义查询的正确方法是什么_Java_Spring_Spring Data Jpa - Fatal编程技术网

Java 在SpringDataJPA中创建自定义查询的正确方法是什么

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

我面临一个问题,当我使用自定义查询方法运行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("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