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