【发布时间】:2016-01-04 12:28:00
【问题描述】:
我想提出一个将数据插入我的数据库的请求。该表有 4 列:ID_DOCUMENT (PK)、ID_TASK、DESCRIPTION、FILEPATH
实体
...
@Column(name = "ID_TASK")
private Long idTask;
@Column(name = "DESCRIPTION")
private String description;
@Column(name = "FILEPATH")
private String filepath;
...
存储库
@Modifying
@Query("insert into TaskDocumentEntity c (c.idTask, c.description, c.filepath) values (:id,:description,:filepath)")
public void insertDocumentByTaskId(@Param("id") Long id,@Param("description") String description,@Param("filepath") String filepath);
控制器
@RequestMapping(value = "/services/tasks/addDocument", method = RequestMethod.POST)
@ResponseBody
public void set(@RequestParam("idTask") Long idTask,@RequestParam("description") String description,@RequestParam("filepath") String filepath){
//TaskDocumentEntity document = new TaskDocumentEntity();
taskDocumentRepository.insertDocumentByTaskId(idTask,descriere,filepath);
}
当我运行我的测试时,我得到了这个错误: 原因:org.hibernate.hql.ast.QuerySyntaxException:期待 OPEN,在第 1 行第 32 列附近找到“c”[插入 TaskDocumentEntity c (c.idTask, c.descriere, c.filepath) 值 (: id,:descriere,:filepath)] 我尝试删除别名 c,但仍然无法正常工作。
【问题讨论】:
-
删除你的
insertDocumentByTaskId。在您的控制器中创建TaskDocumentEntity的实例,设置属性并调用save方法。 JPA 的全部意义在于您不必再编写查询... -
请发布您的存储库类的代码,不仅是方法声明,还要发布您的spring配置类/xml。
标签: spring spring-data