service同一个方法同时调用Model的save和update会失败

有一个需求,使用了Mysql数据库的主键自增,有一个菜单添加的功能,需要在新增后返回新增菜单的id(自增),然后拼一个面包屑式的菜单路径(父级菜单id/菜单id/),service功能,在新增后,马上处理了这个字段,在同一个service方法内,马上调用菜单Model的update会失败,Model中方法_getModifyFlag,在执行save时不为空,但是save之后清空了,在Model中加入新的值之后,执行update,调用model的_getModifyFlag为空(返回了new HashSet),导致更新失败。

请教大神指导,谢谢。

@Jfinal

评论区

JFinal

2019-03-19 16:53

执行 save() 后 modifyFlag 必然为空,再执行 update() 自然就没有意义

可以在执行 update() 前通过调用 setter 方法将需要更新的值设置一次即可

已有账号

2019-03-19 17:05

@JFinal 我在执行update之前,将save后的menu对象,put了之前为空的值,然后执行的update,这样可以吗?
boolean flag = menu.save();
//组装path字段
Menu menuTemp = getOneMenuPath(menu.getInt("mid"));
menu.put("midpath", menuTemp.get("midpath"));
menu.put("mnamepath", menuTemp.get("mnamepath"));
menu.put("mtype", "1");
//更新path字段到数据库
flag = menuTemp.update();
谢谢波总,回复真快。

JFinal

2019-03-19 17:48

@已有账号 被 put 的值会被 update() 忽略掉,需要更新的值,必须使用 set 方法

已有账号

2019-03-19 20:25

@JFinal 已解决,谢谢波总。

JFinal

2019-03-19 20:36

热门反馈

扫码入社