repository.save() 不起作用,無(wú)法保存數(shù)據(jù)
有一個(gè)更新操作是需要先delete user的數(shù)據(jù),然后再重新insert新的數(shù)據(jù)。
剛開(kāi)始使用以下寫(xiě)法:
@Override
public void updSenderNoList(LazyDynaMap userBean) {
logger.info("http://////////////// Start to update Sender No List.");
SysUser sysUser = (SysUser) userBean.get("addUser");
userSaRepository.deleteSenderNoList(sysUser.getAccountNo(),sysUser.getUserId());
insertSenderNoList(userBean);
logger.info("http://////////////// End to update Sender No List.");
}
@Override
public void insertSenderNoList(LazyDynaMap userBean) {
logger.info("http://////////////// 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("http://////////////// End to insert Sender No List.");
}
然后做測(cè)試時(shí)候發(fā)現(xiàn)是單單是這個(gè)updSenderNoList方法是可以insert數(shù)據(jù)的
可是當(dāng)整個(gè)模塊一起測(cè)試的時(shí)候,發(fā)現(xiàn)可以delete數(shù)據(jù),可是卻無(wú)法insert數(shù)據(jù)
搞了兩個(gè)多小時(shí),也想到可能是flush的問(wèn)題,可是開(kāi)始只是在delete后加了flush,發(fā)現(xiàn)沒(méi)有效果
最后想到在save后面加了flush,再次測(cè)試,成功insert數(shù)據(jù),問(wèn)題解決??!
本來(lái)有一個(gè)saveAndFlush()方法的,可是這個(gè)方法的參數(shù)只能是單個(gè)實(shí)體,不能多個(gè)實(shí)體,需要批量save的話(huà),只能save后再加flush()。
PS:這個(gè)問(wèn)題也有可能是由于實(shí)體類(lèi)的配置問(wèn)題,就是實(shí)體類(lèi)可能需要配置一個(gè)ID類(lèi),我這里是沒(méi)有配置的。我沒(méi)有測(cè)試配置ID類(lèi)之后會(huì)怎樣,不清楚可不可以。
關(guān)于實(shí)體類(lèi)與ID類(lèi)的配置請(qǐng)參考這個(gè):