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

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

原文地址:https://www.cnblogs.com/jimloveq/p/10609468.html