用户场景:客户在进行数据操作时,需要记录实体数据的变化历史,计划用实体拦截器实现。

原因:EOS提供的基础构件库的每个方法都单独的在一个das session中执行,只有将查询和更新放在一个das session中执行,arg3才会有值。

解决方案:


 Connection conn = ConnectionHelper.getCurrentContributionConnection("default");

 try { IDASSession session = DASManager.createDasSession(conn);

 IDASCriteria criteria = DASManager.createCriteria("org.gocom.abframe.unittest.handler.db.OOrg");

criteria.add(ExpressionHelper.eq("orgId", BigDecimal.ONE));

DataObject obj = session.queryEntity(criteria);

obj.set("orgCode", "newVV");

session.updateEntity(obj);

session.close(); }

catch (Exception e)

{ try { if (conn != null) { conn.close(); } }

catch (Exception ex) { }

 }

此时将查询和更新放在一个das session中执行,只有符合这种场景使用时,才能取到arg3值。