您的位置:首页 > 其它

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

2016-05-25 15:50 253 查看
今天在用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,解决了!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: