前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >@Transactional不起作用解决方案

@Transactional不起作用解决方案

作者头像
周杰伦本人
发布2023-10-12 14:39:37
1340
发布2023-10-12 14:39:37
举报
文章被收录于专栏:同步文章同步文章

@Transactional不起作用 解决方案: 把@Transactional 放在Service层就可以了 放在Controller层里不起作用。。。

这是Controller

代码语言:javascript
复制
@RequestMapping(value = {"save"})
    public String saveDiscover(OrientTeamsInfo orientTeamsInfo, RedirectAttributes redirectAttributes) {
        if (StringUtils.isNotEmpty(orientTeamsInfo.getPersonid())) {
            //主键不为空 进行修改操作
            //设置队长
            orientTeamsInfoService.setCaptain(orientTeamsInfo);
            addMessage(redirectAttributes, "修改成功");
            return "redirect:" + adminPath + "/flowmanage/update?teamsid="+orientTeamsInfo.getTeamsid();
        } else {
            return "redirect:" + adminPath + "/flowmanage/list";
        }
    }

这是Service 经典的java.lang.AritmeticExcption:/ by zero异常 嘿嘿

代码语言:javascript
复制
@Transactional
    public void setCaptain(OrientTeamsInfo orientTeamsInfo) {
        //1.把这个队伍的队长取消
        dao.cancelCaptain(orientTeamsInfo);
        //2.设置新的队长
        int i=2/0;
        dao.update(orientTeamsInfo);
    }

对应的xml也贴出来吧 显得专业

代码语言:javascript
复制
	<!--取消队伍的队长  1表示是队长-->
    <update id="cancelCaptain" parameterType="com.xwtec.flowmanage.entity.OrientTeamsInfo">
        update sdh5.T_ORIENT_PERSONINFO t
        set t.iscaptain=0
        where t.teamsid=#{teamsid} and t.iscaptain=1
    </update>
    
    <!--队员信息编辑-->
    <update id="update" parameterType="com.xwtec.flowmanage.entity.OrientTeamsInfo" >
        update sdh5.T_ORIENT_PERSONINFO
        <set >
            <if test="teamsid != null" >
                TEAMSID = #{teamsid,jdbcType=VARCHAR},
            </if>
            <if test="teamsname != null" >
                TEAMSNAME = #{teamsname,jdbcType=VARCHAR},
            </if>
            <if test="openid != null" >
                OPENID = #{openid,jdbcType=VARCHAR},
            </if>
            <if test="personname != null" >
                PERSONNAME = #{personname,jdbcType=VARCHAR},
            </if>
            <if test="iscaptain != null" >
                ISCAPTAIN = #{iscaptain,jdbcType=VARCHAR},
            </if>
            <if test="jointime != null" >
                JOINTIME = #{jointime,jdbcType=VARCHAR},
            </if>
            <if test="remark != null" >
                REMARK = #{remark,jdbcType=VARCHAR},
            </if>
        </set>
        where PERSONID = #{personid,jdbcType=VARCHAR}
    </update>

参考博客: https://www.cnblogs.com/xiaohan666/p/9272581.html

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-10-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档