EAS BOS資料查詢預設會查分錄的分析

來源:互聯網
上載者:User

在BOS中使用EJB介面擷取資料時,你會驚喜的發現,架構會預設把分錄的ID給你查出來,但是當你不需要分錄資料且分錄資料量比較大的情況下,確實給我們帶來了些麻煩。

  例如實體 Team 含有一個分錄 Users,現在需要根據ID查詢Team資料,通常代碼都是這麼寫的:
 1 EntityViewInfo view = new EntityViewInfo(); 2 view.getSelector().add("id"); 3 view.getSelector().add("name"); 4 view.getSelector().add("number"); 5  6 FilterInfo filter = new FilterInfo(); 7 filter.getFilterItems().add(new FilterItemInfo("id",'uuid-bosType'));// ID是主鍵欄位 8  9 view.setFilter(filter);10 11 TeamCollection colls = TeamFactory.getRemoteInstance().getTeamCollection(view);12 13 // 正常的情況下colls中只有一個TeamInfo,14 TeamInfo team = colls.get(0);15 16 team.getUsers();// 當執行到這裡的時候,你就會發現怎麼這裡不是空的,而是有很多格式如id='xxxxxxxxxxxxxxxxxxxxxx'17 的資料呢???
 你和我碰到的問題一樣,原因是這樣的,BOS預設幫你查出來了。 雖然大多數情況下是需要查詢分錄資料的,比如:修改單據。 但是,有時只需要查詢Team本身的資料即可,不需要users的任何資料,包括主鍵欄位,就像上面的例子;顯然EAS BOS中,預設會將單據頭及分錄的主鍵欄位也查出來,在上述情況下是不必要的。  經過分析後發現,EAS BOS中ORMapping的實現中有相關的介面,可以滿足上述要求,但是EAS在EJB層沒有提供相應的方法。所以經過琢磨,自己在ControllerBean中提供了這樣一個方法,實現如下:
 1 protected IObjectCollection _getHeadCollection(Context ctx, EntityViewInfo view) throws BOSException,                                            EASBizException {  2      Connection cn = null;  3      ORMappingDAO dao = null;  4      IObjectCollection datas = null;  5       try {  6          cn = getConnection(ctx);  7          dao = (ORMappingDAO) getDAO(ctx, cn);  8          datas = dao.getCollection(view, true); // 關鍵在這裡 9       } finally { 10          SQLUtils.cleanup(cn); 11       } 12      return datas; 13  }  
上述代碼中:getDAO(ctx,cn)為基類提供方法,可以直接使用。架構應該可以動態判斷一下是不是需要分錄資料,包括分錄的主鍵欄位。轉載註明:http://www.cnblogs.com/masb/archive/2013/01/09/2853830.html

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.