嘿大家都试图在我的春季启动应用中使用@Query
注释在表格中插入数据我得到了一个postgres例外:
org.postgresql.util.PSQLException: No results returned by the query
这是我的代码:
这是存储库
@Query(value="INSERT INTO \"FCT_BY_DEV\"(\"IdDev\", \"IdFonction\") VALUES (?, ?) ",nativeQuery=true)
public String isertfonctionstodev(int dev,int fonction);
这是控制器:
@RequestMapping(value="/function/insert", method = RequestMethod.POST)
public String insererfonctions (int dev,int fonction){
System.out.println("dev="+dev+"fonction="+fonction);
fonctionRepository.isertfonctionstodev(dev, fonction);
System.out.println("********");
return "aaa";
}
我在angularJs
中使用$ http$http.post("/function/insert?dev="+$scope.id+"&fonction="+$scope.idf);
最后这是服务器日志
dev=16006fonction=14
Hibernate: INSERT INTO "FCT_BY_DEV"("IdDev", "IdFonction") VALUES (?, ?)
2016-04-27 16:52:03.204 WARN 7036 --- [nio-8080-exec-2] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 0, SQLState: 02000
2016-04-27 16:52:03.204 ERROR 7036 --- [nio-8080-exec-2] o.h.engine.jdbc.spi.SqlExceptionHelper : Aucun résultat retourné par la requête.
数据是正确的,我尝试使用相同的值进行相同的查询,并且它解决了为什么posgres正在生成此异常以及如何修复,感谢任何帮助
答案 0 :(得分:12)
我认为修改查询必须注意额外的
@Modifying
答案 1 :(得分:0)
这应该可以解决您的问题:
@Transactional
@Modifying(clearAutomatically = true)
@Query(value="update policy.tbl_policy set ac_status = 'INACTIVE' where pol_id = :policyId and version_no = :version_no and ac_status = 'ACTIVE'", nativeQuery=true)
public void updateExistingRowbyId(@Param("policyId") Long pol_id, @Param("version_no") Long version_no);
没有@Transactional批注,可能会发生以下错误: javax.persistence.TransactionRequiredException:执行更新/删除查询