简体   繁体   English

如何使用JPA和@Query命名参数将数据导入MySQL

[英]How to into data into a MySQL using JPA and @Query named Parameters

I am getting the following error: 我收到以下错误:

Using named parameters for method public static void com.htd.repository.MaterialRepository.uploadMaterialData(java.lang.String,java.math.BigDecimal,java.lang.String,java.math.BigDecimal,java.math.BigDecimal) but parameter 'material_number' not found in annotated query 'INSERT INTO hillcresttooldie VALUES (?,?,?,?,?)'!

I read the documention at: http://docs.spring.io/spring-data/jpa/docs/1.4.3.RELEASE/reference/html/jpa.repositories.html but I am still having issues. 我在以下位置阅读了该文档: http : //docs.spring.io/spring-data/jpa/docs/1.4.3.RELEASE/reference/html/jpa.repositories.html,但是我仍然遇到问题。 I was under the impression JPA created queries for us. 我印象中,JPA为我们创建了查询。 I am used to writing out the queries until I cam across this awesome piece of technology. 我习惯于写出查询,直到我掌握了这项很棒的技术。

public interface MaterialRepository extends JpaRepository<Material,Long> {

    @Query("INSERT INTO hillcresttooldie VALUES (?,?,?,?,?)")
    static void uploadMaterialData(String material_number,BigDecimal material_thickness,String material_size,BigDecimal lb_per_sheet,BigDecimal dollar_per_lb) {


    }
}

Trying to use the query in the MaterialResource.java file 尝试在MaterialResource.java文件中使用查询

//puts materials into map and the key is the material number
                materialMap.put(materialValue, material);

                MaterialRepository.uploadMaterialData(material.getMaterial_number(), material.getMaterial_thickness(),
                        material.getMaterial_size(), material.getLb_per_sheet(), material.getDollar_per_lb());

Change your code to 将您的代码更改为

@Query("INSERT INTO hillcresttooldie (material_number,material_thickness,material_size,lb_per_sheet,dollar_per_lb) VALUES (:number, :thickness, :size, :lbPerSheet, :dollarPerLb)")
void uploadMaterialData(String number, BigDecimal thickness, String size, BigDecimal lbPerSheet, BigDecimal dollarPerLb)

try : 尝试:

public interface MaterialRepository extends JpaRepository<Material,Long> {

@Modifying
@Query(nativeQuery = true,"INSERT INTO hillcresttooldie(material_number,material_thickness,material_size,lb_per_sheet,dollar_per_lb) VALUES (?1,?2,?3,?4,?5)")
static void uploadMaterialData(String material_number,BigDecimal material_thickness,String material_size,BigDecimal lb_per_sheet,BigDecimal dollar_per_lb) {


}

} }

public interface MaterialRepository extends JpaRepository<Material,Long> {

@Query("INSERT INTO hillcresttooldie(material_number) VALUES (:material_number)") //....
static void uploadMaterialData(@Param("material_number") String material_number) {


}

} }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM