使用JPA和Java更新查询

使用JPA和Java更新查询,java,hibernate,model-view-controller,spring-data-jpa,Java,Hibernate,Model View Controller,Spring Data Jpa,我正在尝试更新我的jpa存储库 @Transactional public interface UserRepository extends JpaRepository<User, Integer> { User findByUsername(String username); User findById(Long id); @Query(value = "update user t set t.rule_id = NULL where t.rule_id = :id", nati

我正在尝试更新我的jpa存储库

@Transactional
public interface UserRepository extends JpaRepository<User, Integer> {
User findByUsername(String username);
User findById(Long id);
@Query(value = "update user t set t.rule_id = NULL  where t.rule_id = :id", nativeQuery = true)
List<User> setNUll(@Param("id") String id);}
此错误在我的浏览器中出现:

出现意外错误(类型=内部服务器错误,状态=500)。 无法提取结果集;嵌套异常为org.hibernate.exception.genericjdbception:无法提取结果集

服务器还显示:

SQL错误:0,SQLState:S1009 2017-06-18 12:51:15.778错误10388---[nio-8080-exec-4]o.h.engine.jdbc.spi.SqlExceptionHelper:无法使用executeQuery()发出数据操作语句。 2017-06-18 12:51:15.844错误10388---[nio-8080-exec-4]o.a.c.c.c.[/].[dispatcherServlet]:路径[]上下文中Servlet[dispatcherServlet]的Servlet.service()引发异常[请求处理失败;嵌套异常为org.springframework.orm.jpa.JpaSystemException:无法提取结果集;嵌套异常为org.hibernate.exception.genericjdbception:无法提取结果集],根本原因为


java.sql.SQLException:无法使用executeQuery()发出数据操作语句。

您需要使用
@Query
@Modifying
注释来退出使用JPA的更新查询。

在我的例子中,我添加了两个注释。 @ @修改 上面的@Query注释使用Jpa执行更新查询

@RequestMapping(value = "/admin/rule/{id}/edit", method = RequestMethod.GET)
public String editRule(@PathVariable Integer id, Model model)
{
    userService.setNUll(Integer.toString(id));
    model.addAttribute("rule", ruleCrudService.getRuleById(id));
    updateUserData();
    return "ruleForm";
}