repository.save() 无效 无法保存数据

12 篇文章 0 订阅

repository.save() 不起作用,无法保存数据

有一个更新操作是需要先delete user的数据,然后再重新insert新的数据。

刚开始使用以下写法:

@Override
    public void updSenderNoList(LazyDynaMap userBean) {
        logger.info("   Start to update Sender No List.");
        SysUser sysUser = (SysUser) userBean.get("addUser");
        userSaRepository.deleteSenderNoList(sysUser.getAccountNo(),sysUser.getUserId());
        insertSenderNoList(userBean);
        logger.info("   End to update Sender No List.");
    }
    
@Override
    public void insertSenderNoList(LazyDynaMap userBean) {
        logger.info("   Start to insert Sender No List.");
        SysUser addUser = (SysUser) userBean.get("addUser");
        String senderNoList = (String) userBean.get(Constants.BEAN_USER_SELECTSENDERLIST);
        if (StringUtil.isNotEmpty(senderNoList)) {
            List<UserSa> userSaList = new ArrayList<UserSa>();
            UserSa userSa = null;
            for (String senderNo : senderNoList.split(Constants.SENDER_NO_SEPARATOR)) {
                userSa = new UserSa(addUser.getAccountNo(),addUser.getUserId(),senderNo);
                userSaList.add(userSa);
            }
            userSaRepository.save(userSaList);
        }
        logger.info("   End to insert Sender No List.");
    }

然后做测试时候发现是单单是这个updSenderNoList方法是可以insert数据的

可是当整个模块一起测试的时候,发现可以delete数据,可是却无法insert数据

搞了两个多小时,也想到可能是flush的问题,可是开始只是在delete后加了flush,发现没有效果

最后想到在save后面加了flush,再次测试,成功insert数据,问题解决!!
本来有一个saveAndFlush()方法的,可是这个方法的参数只能是单个实体,不能多个实体,需要批量save的话,只能save后再加flush()。

PS:这个问题也有可能是由于实体类的配置问题,就是实体类可能需要配置一个ID类,我这里是没有配置的。我没有测试配置ID类之后会怎样,不清楚可不可以。

关于实体类与ID类的配置请参考这个:

http://note.youdao.com/noteshare?id=ff4c26ee17053de068eb1655f0f359c2&sub=1090BA93FED44BB49542C5B4EA5C4064

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值