就是查出实体对象用updateById方法修改,实体debug查看已经修改,但是数据库中未修改,能帮忙解答一下吗
WxCpServiceImpl wxCpService = QyapiWeixin.getWxCpServiceImpl();
WxCpUserService userService = wxCpService.getUserService();
WxCpDepartmentService departmentService = wxCpService.getDepartmentService();
//2- 获取部门及下级,返回id、name、父id、顺序、部门负责人
List delist2 = departmentService.list(null);
delist2.stream().forEach(i -> {
});
for(WxCpDepart i:delist2){
//由于部门id是1,2,3这种 多个企微在前面价格corpId区分
SysDepart sysDepart = sysDepartServiceImpl.getDepart(wxCpService.getWxCpConfigStorage().getCorpId()+i.getId());
SysDepart parent = sysDepartServiceImpl.getDepart(wxCpService.getWxCpConfigStorage().getCorpId()+i.getParentId());
if(sysDepart != null){
if(parent !=null){
sysDepart.setParentId(parent.getId());
}
sysDepart.setDepartName(i.getName());
sysDepartServiceImpl.updateById(sysDepart);
}else{
sysDepart = new SysDepart();
if(parent !=null){
sysDepart.setParentId(parent.getId());
}
sysDepart.setOrgCategory("2");
sysDepart.setDepartName(i.getName());
sysDepart.setQywxDepartId(wxCpService.getWxCpConfigStorage().getCorpId()+i.getId());
sysDepartServiceImpl.saveDepartData(sysDepart,"");
}
}
在JeecgBoot中使用updateById方法,通常需要在实体类中添加注解 @TableName。确保实体类被正确的映射到数据库的表中。如果实体对象已经被修改了,但是实体并没有被更新到数据库,可以确保以下几个方面是否正确:
在实体类中,确保有可修改属性的set方法;
在Controller或Service层中,调用updateById方法时,确保传递的是已修改的实体对象;
确认要修改的表是否存在,并且数据库连接是否正确;
确认要修改的字段是否正确设置了数据库的管理权限,即用户是否有对表的update权限。
如果上述方法都确定是正确的,而且仍旧无法更新数据,可以查看Jdbc的日志,来定位问题。
需要注意的是,许多数据库都支持事务,如果代码中使用了事务,一定要确认事务对数据库状态的影响。 大概率是事务配置的原因。