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类的配置请参考这个: