Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.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 使用spring boot jpa使用自定义查询将数据从一个表复制到另一个表_Java_Spring Boot - Fatal编程技术网

Java 使用spring boot jpa使用自定义查询将数据从一个表复制到另一个表

Java 使用spring boot jpa使用自定义查询将数据从一个表复制到另一个表,java,spring-boot,Java,Spring Boot,我是穿春装的新手。我正在用SpringBootJPA开发一个应用程序,这样在设置课程时,就会提供一个前端供批准。单击approve按钮,设置的课程将从courses表复制到course_confirm表,但我得到以下错误:“未能将'java.lang.String'类型的值转换为所需的'long'类型;嵌套异常为java.lang.NumberFormatException:对于输入字符串:“{id}”,即使我使用本机SQL查询时没有“WHERE id>1”条款以下是代码: courses be

我是穿春装的新手。我正在用SpringBootJPA开发一个应用程序,这样在设置课程时,就会提供一个前端供批准。单击approve按钮,设置的课程将从courses表复制到course_confirm表,但我得到以下错误:“未能将'java.lang.String'类型的值转换为所需的'long'类型;嵌套异常为java.lang.NumberFormatException:对于输入字符串:“{id}”,即使我使用本机SQL查询时没有“WHERE id>1”条款以下是代码:

  • courses bean类和course_confirm类(表)的字段如下所示:

    @实体
    @表(name=“course\u confirm”)
    公共类CourseCh扩展了AuditModel{
    私有静态最终长serialVersionUID=1L;
    @身份证
    @列(name=“id”)
    @GeneratedValue(策略=GenerationType.IDENTITY)
    私人长id;
    @NotEmpty(message=“课程代码必填”)
    @列(name=“课程代码”)
    私有字符串码;
    @NotEmpty(message=“需要课程标题”)
    @列(name=“课程名称”)
    私有字符串标题;
    @NotEmpty(message=“需要部门”)
    @列(name=“dept\u id”)
    私人字符串部门;
    @NotEmpty(message=“需要信用单位”)
    @列(名称=“信用单位”)
    私有字符串单元;
    @列(name=“学期”)
    私人字符串学期;
    @列(name=“课程类型”)
    私有字符串类型;
    @NotEmpty(message=“需要通过标记”)
    @列(name=“通过标记”)
    私有字符串密码;
    @NotEmpty(message=“Session required”)
    @列(name=“session”)
    私有字符串会话;
    @列(name=“第一个前提条件”)
    私有字符串的先决条件1;
    @列(name=“第二优先权”)
    私有字符串的先决条件2;
    @列(name=“联合前提条件”)
    私有字符串连接请求;
    //为了简洁起见,getter、setter和tostring被省略了
    
  • 存储库层:

  • @存储库
    公共接口MoveCourseRepository扩展了CrudeRepository{
    @查询(nativeQuery=true,value=“插入课程确认(课程代码、学分单位、部门id、联合先决条件、及格分数,”
    +“第一个先决条件、第二个先决条件、学期、课程、课程名称、课程类型”
    +“创建时间,更新时间)选择课程代码、学分单位、部门id、联合先决条件”
    +及格分数、第一先决条件、第二先决条件、学期、课时、课程名称
    +“课程类型,从id>1的课程创建,更新”
    列出moveCourseConfirm(长id);
    
  • 服务层:
  • @Override public List saveCourseConfirm(长id){return moveCourseRepository.moveCourseConfirm(id);}
    
  • 控制器层:
  • @GetMapping(“/updateCurriculum/{id}”)
    公共字符串showFormForUpdate(@PathVariable(value=“id”)长id,模型){
    //从服务中获取员工
    CourseCh课程=courseChService.findCourseChById(id);
    //将employee设置为模型属性以预填充表单
    model.addAttribute(“课程”,课程);
    返回“课程/更新课程”;
    }
    

    如果有人能帮我减轻上述错误,我将不胜感激。

    JpaRepository
    中使用
    @Query
    时,您必须使用
    @Param
    作为存储库方法中的查询参数,并在查询中的参数名称前面添加

    所以你应该试试

    @Query(nativeQuery = true, value = "INSERT into course_confirm (course_code, credit_unit, dept_id, joint_prerequisite, pass_mark,"
                    + "first_prerequisite, second_preriquisite, semester, session, course_title, course_type, "
                    + "created_at, updated_at) SELECT course_code, credit_unit, dept_id, joint_prerequisite, "
                    + "pass_mark, first_prerequisite, second_preriquisite, semester, session, course_title, "
                    + "course_type, created_at, updated_at from courses WHERE :id > 1")
            List<CourseCh> moveCourseConfirm(@Param("id") long id);
    
    @Query(nativeQuery=true,value=“插入课程确认(课程代码、学分单位、部门id、联合先决条件、及格分数,”
    +“第一个先决条件、第二个先决条件、学期、课程、课程名称、课程类型”
    +“创建时间,更新时间)选择课程代码、学分单位、部门id、联合先决条件”
    +及格分数、第一先决条件、第二先决条件、学期、课时、课程名称
    +“课程类型,创建于,更新于课程,其中:id>1”)
    列出moveCourseConfirm(@Param(“id”)long id);