刚接触Maximo也没多久,公司给安排了一个内部管理项目练手。
最近就碰到了一个小问题,当我在操作当前表时需要级联更新关联表中的字段,最后通过自己摸索勉强实现了该功能,虽然不知道是不是最简单的方法,但觉得还是分享出来比较好。
最近就碰到了一个小问题,当我在操作当前表时需要级联更新关联表中的字段,最后通过自己摸索勉强实现了该功能,虽然不知道是不是最简单的方法,但觉得还是分享出来比较好。
我是在MBO类保存方法中实现该功能:
MboSetRemote pre = MXServer.getMXServer().getMboSet("PRESALES",this.getUserInfo()); //通过关联获得关联表的MboSet集合 pre.setWhere(" PRESALESNUM = '" + this.getString("PRESALESNUM")+ "' and siteid = '" + this.getString("SITEID") + "'"); //设置where条件过滤MboSet pre.reset(); MboRemote presales = pre.getMbo(0); //这里根据实际情况而言,因为我自己的关联是多对一,所以过滤掉后的Mbo应只有一个 if (presales == null) throw new MXApplicationException("", "没有项目来源!~"); presales.setValue("REAL_COST", presales.getDouble("REAL_COST")+ totalamount, 11L); //最后设置关联表中字段,设置后别忘记了保存关闭释放资源 pre.save(); pre.close();
从上面这个方法我又得到另外一个功能,获得目标表字段值更新当前字段,在此之前也实现了该功能,但那是建立在数据表有关联的基础之上。
以下我就举一个简单的例子,在新建一条记录时,自动插入当前登录人员所在部门,在查看UserInfo后了解到没有现成的方法实现该功能,所以参考上面提到的级联更新方法
MboSetRemote per = MXServer.getMXServer().getMboSet("PERSON",this.getUserInfo()); per.setWhere("PERSONID= '" + this.getString("APPLICANT") + "'"); per.reset(); MboRemote myself = per.getMbo(0); if (myself == null) throw new MXApplicationException("", "没有该人员!"); setValue(ExpConstant.DEPARTMENT, myself.getString("DEPARTMENT"), 11L); per.close();