<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    spark的自留地(ofbiz/eclipse rcp/shark/opentaps)

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      54 Posts :: 0 Stories :: 112 Comments :: 0 Trackbacks

    * 我可以在entitymodel.xml文件中定義自己的view-entities嗎?

    不能, 你可以動態定義它們.你可以查看org.ofbiz.party.party.PartyServices中的findParty方法學習它的使用

    * 如果為有效期間創建條件?

    我們提供了一組非常有用的方法EntityUtil.getFilterByDateExpr ,它能返回一個EntityConditionList根據有效期間來篩選一個結果集. 

    * 如何在大數據結果集下工作

    如果你檢出一個大的數據結果集,你應當使用EntityListIterator通過迭代方式讀取數據,而非List.
    示例,如果你使用:

    List products = delegator.findAll("Product");


    你可能獲得一個"java.lang.OutOfMemoryError".  這是由于你通過findAll, findByAnd, findByCondition等方法來獲得一個大的內存數據結果集導致內存溢出.  在這種情況下, 應該使用EntityListIterator迭代方式來讀取你的數據. 這個示例應改寫成:

    productsELI = delegator.findListIteratorByCondition("Product"new EntityExpr("productId", EntityOperator.NOT_EQUAL, null), UtilMisc.toList("productId"), null);

     

    注意獲得EntityListIterator的方法只用通過條件, 所以你需要將你的條件重寫為EntityExpr (在此次情況下,productId是主鍵字段不可能為空的, 所以將返回所有Proudct實例,)或 EntityConditionList.

    此方法參數中包含檢出的字段(這里為productId)以及排序字段(這里不需要,所以賦了null)

    你可以傳遞一個null作為EntityCondition參數來獲得所有結果.然后這不一定在所有數據庫下都能正常工作!  在maxdb及其它不常用的數據庫下時你要小心使用這些高級功能.

    * 如何使用EntityListIterator

    當我們通過EntityListIterator迭代訪問數據時, 通常是這樣:

    while ((nextProduct = productsELI.next()) != null{
    .
        
    // operations on nextProduct
    }


    在EntityListIterator 中使用 .hasNext()方法是一種不經濟的做法.

    在你完成你的操作后,要記得關閉此迭代

    productsELI.close();

     

    * 如何查詢無重結果集

    當前只能通過list iterator方法并指定EntityFindOptions參數,示例如下:

        listIt = delegator.findListIteratorByCondition(entityName, findConditions, 
                
    null// EntityConditions參數
                fieldsToSelectList, 
                fieldsToOrderByList,  
                
                
    //關鍵部分.  第一個true表示"specifyTypeAndConcur"
                
    // 第二個true指完是一個濾重查詢.  顯然在實體引擎中只能通過這個方法來進行濾重查詢
                new EntityFindOptions(true, EntityFindOptions.TYPE_SCROLL_INSENSITIVE, EntityFindOptions.CONCUR_READ_ONLY, true));

     

    在minilang, 它會更簡單:

     

      <entity-condition entity-name="${entityName}" list-name="${resultList}" distinct="true">
         
    <select field="${fieldName}"/>
         .


    * 如何進行一個大小寫不敏感的查詢(即不分大小寫)

    你需要查詢條件表達式兩邊均轉為大寫,示例:

    andExprs.add(new EntityExpr("lastName"true, EntityOperator.LIKE, "%"+lastName+"%"true));

         (來源org.ofbiz.party.party.PartyServices)


    * 如何將EntityListIterator轉換成List

      使用EntityListIterator.getCompleteList() 及getPartialList 方法


    * 如何自動獲得下一個ID值

      在minilang 中使用 <sequence-id-to-env ...> 或在Java中通過delegator.getNextSeqId(...) 獲得 .  id序列存放于SequenceValueItem中.


    * 關于ID值的一些警告

      不要在種子/演示數據中使用10000做為數據的ID,當系統嘗試自動創建數據時,它們都將嘗試10000,這將導致一個鍵值沖突錯誤.

    * 如何從一個明細項中獲得序列ID
      
      有些實體,比如擁有itemSeqId 的InvoiceItem(發票明細項) and OrderItem(訂單明細項).此項通常在你處一次為item生成GenericValue 時自動生成ID,之后向delegator要求生成項目的seq Id:

      GenericValue orderItem = delegator.makeValue("OrderItem", orderItemValues);
      delegator.setNextSubSeqId(orderItem, 
    "orderItemSeqId", ORDER_ITEM_PADDING, 1);

    未完待續>>

    本文檔譯自ofbiz 4.0 cookbooks,本人翻譯,歡迎轉載,請注明出處.
    posted on 2008-10-25 11:42 shanghai_spark 閱讀(1647) 評論(1)  編輯  收藏 所屬分類: opentaps

    Feedback

    # re: OFBiz實體引擎開發烹調書 (二) 2008-10-25 13:37 falsh播放器下載
    好像很復雜的 以后每天來大哥的播客學下java  回復  更多評論
      

    主站蜘蛛池模板: 亚洲中文字幕无码一去台湾| 97国免费在线视频| MM1313亚洲精品无码久久| jizz在线免费观看| 成人免费无码大片A毛片抽搐| 亚洲国产精品无码久久一区二区| 亚洲色偷精品一区二区三区| 嫩草成人永久免费观看| 亚洲av无码专区在线观看素人| 亚洲国产成人久久精品app| 中文在线观看国语高清免费| 永久黄网站色视频免费直播| 亚洲综合色一区二区三区小说| 国产人成网在线播放VA免费| 日韩成人免费在线| 亚洲伊人久久大香线焦| 歪歪漫画在线观看官网免费阅读| 亚洲日本一区二区三区| 好湿好大好紧好爽免费视频| 亚洲成AV人片一区二区密柚| 5g影院5g天天爽永久免费影院| 亚洲AV永久无码精品成人| 一级毛片免费播放试看60分钟| 国产无遮挡吃胸膜奶免费看 | 日韩精品福利片午夜免费观着| 香蕉视频在线观看亚洲| 成年女人A毛片免费视频| 亚洲韩国在线一卡二卡| 亚洲精品免费视频| 亚洲一本综合久久| 精品无码一级毛片免费视频观看 | 久久精品成人免费国产片小草| 亚洲国产精品自在线一区二区| 手机在线免费视频| 精品国产污污免费网站入口| 亚洲中字慕日产2021| 一个人在线观看视频免费| 成人免费网站视频www| 亚洲av无码成人精品区在线播放| 国产免费拔擦拔擦8X高清在线人| 亚洲精品高清国产一久久|