从零开始接触jpa,工作中偶遇update问题

来源:互联网 发布:mac mini 更新时间 编辑:程序博客网 时间:2024/06/05 11:11

今天在用jpa写update语句时碰到了2个问题

public interface RRyxxbMapper extends JpaRepository<RRyxxb, Integer>,        JpaSpecificationExecutor<RRyxxb> {    @Query("update RRyxxb set bzzt = ?2 where rid=?1")    void updateRRyxxb(Integer rid,Integer bzzt);    }

运行报错:

org.hibernate.hql.internal.QueryExecutionRequestException: Not supported for DML operations

发现不支持DML操作

百度发现需要@Modifying支持,改为如下:

public interface RRyxxbMapper extends JpaRepository<RRyxxb, Integer>,        JpaSpecificationExecutor<RRyxxb> {    @Modifying    @Query("update RRyxxb set bzzt = ?2 where rid=?1")    void updateRRyxxb(Integer rid,Integer bzzt);    }
运行继续报错:

Executing an update/delete query; nested exception is javax.persistence.TransactionRequiredException

分析应该是缺少事务,加入@Transactional

    @Transactional(rollbackFor = Exception.class)    public String update(Integer rid,Integer bzzt){        String message = "0";        if(rid!=null&&bzzt!=null){            try {                rRyxxbMapper.updateRRyxxb(rid, bzzt);                message = "1";            } catch (Exception e) {                System.out.println(e.getMessage());            }        }        return message;    }
运行ok,解决了!


0 0
原创粉丝点击