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

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

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

    posts - 64,comments - 22,trackbacks - 0
    * 保持實體名稱少于25個字符
    這個限制主要是為了Oracle只支持30字符以內(nèi)的數(shù)據(jù)庫對象名稱,再加上OFBiz會自動在單詞之間加上"_",所以就得出了這么個限制.

    * 關(guān)聯(lián)的工作方式
    它們定義于entitymodel.xml文件中的<entity>段,示例如下:
          <relation type="one" fk-name="PROD_CTGRY_PARENT" title="PrimaryParent" rel-entity-name="ProductCategory">
            
    <key-map field-name="primaryParentCategoryId" rel-field-name="productCategoryId"/>
          
    </relation>
          
    <relation type="many" title="PrimaryChild" rel-entity-name="ProductCategory">
            
    <key-map field-name="productCategoryId" rel-field-name="primaryParentCategoryId"/>
          
    </relation>
         type這個屬性標(biāo)簽定義關(guān)聯(lián)類型: "one"表示一對一,"many"表示從此實體引出的一對多關(guān)系
         fk-name的屬性值是數(shù)據(jù)庫外鍵名.為自己的外鍵命名是一個好的習(xí)慣,雖然如果你不設(shè)置此屬性,OFiz也會自己建外建.
         rel-entity-name的屬性值指向關(guān)聯(lián)的實體名稱
         title用來區(qū)分兩個實體之間的多重關(guān)系
         <key-map>節(jié)點定義關(guān)聯(lián)中使用到的字段.field-name指向本實體內(nèi)的引用字段,rel-field-name定義關(guān)聯(lián)的實體字段,你可以通過多個字段組合關(guān)聯(lián)
         當(dāng)你訪問一個關(guān)聯(lián),你可以使用title+entityName作為參數(shù)調(diào)用.getRelated("")或.getRelatedOne("")方 法.在關(guān)聯(lián)為"many"時使用.getRelated("")是恰當(dāng)?shù)?因為它返回一個List,同樣在關(guān)聯(lián)為"one"時通 過.getRelatedOne("")方法獲得一個值.

    * view-entities相關(guān)內(nèi)容
    view-entities的功能非常強(qiáng)大,它允許你可以創(chuàng)建一個join-like查詢,即使你的數(shù)據(jù)庫不支持join.
    關(guān)于你數(shù)據(jù)庫的join語法存放在entityengine.xml的datasource節(jié)點下的join-style屬性中.
    當(dāng)你通過<view-link...>節(jié)點將兩上實體連接起來時,記住:
    1. 實體名稱順序是重要的
    2. 默認(rèn)的連接方式是inner join(即同樣的值存在于兩個實體類中),外連接需要使用rel-optional="true"
    如果多個實體中擁有相同的字段名稱,比如statusId,結(jié)果集中的statusId使用第一個實體中的該列,其它實體中的同名列將被丟棄.如果你想要 同時獲得這些列,你需要通過在其之前加入<alias-all>節(jié)點,一個方式是使用<alias ..>節(jié)點來為不同實體的同名字段起別名,示例:
    <alias entity="EntityOne" name="entityOneStatusId" field="statusId"/>
    <alias entity="EntityTwo" name="entityTwoStatusId" field="statusId"/>
    另一種方法是在<alias-all>節(jié)點中使用<exclude field="">,如下:
    <alias-all entity-alias="EN">
      
    <exclude field="fieldNameToExclude1"/>
      
    <exclude field="fieldNameToExclude2"/>
    </alias-all>

    這樣也可以排除掉很多不打算使用到的信息,特別是在一個非常大的表中查詢時.
    如果你打算執(zhí)行類似于以下的查詢語句時:
    SELECT count(visitId) FROM GROUP BY trackingCodeId WHERE fromDate > '2005-01-01'
    需要包含字段visitId以及function="count" 標(biāo)簽,trackingCodeId需加上group-by="true"標(biāo)簽,fromDate需要加上group-by="false"標(biāo)簽

    在你進(jìn)行查詢時,有一件非常重要的事情需要注意,比如說delegator.findByCondition方法,你必須指定檢出的字段列表,并且你不能 指定fromDate字段,否則你將得到一個錯誤.這就是為webtools不能夠使用view-entities來查看的原因.

    你可以查看applications/marketing/entitydef/entitymodel.xml的底部內(nèi)容學(xué)習(xí),及通過 applications/marketing/webapp/marketing/WEB-INF/actions/reports學(xué)習(xí) beanshell腳本的調(diào)用.

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

    不能, 你可以動態(tài)定義它們.你可以查看org.ofbiz.party.party.PartyServices中的findParty方法學(xué)習(xí)它的使用

    * 如果為有效期間創(chuàng)建條件?

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

    * 如何在大數(shù)據(jù)結(jié)果集下工作

    如果你檢出一個大的數(shù)據(jù)結(jié)果集,你應(yīng)當(dāng)使用EntityListIterator通過迭代方式讀取數(shù)據(jù),而非List.
    示例,如果你使用:

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


    你可能獲得一個"java.lang.OutOfMemoryError". 這是由于你通過findAll, findByAnd, findByCondition等方法來獲得一個大的內(nèi)存數(shù)據(jù)結(jié)果集導(dǎo)致內(nèi)存溢出. 在這種情況下, 應(yīng)該使用EntityListIterator迭代方式來讀取你的數(shù)據(jù). 這個示例應(yīng)改寫成:

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

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

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

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

    * 如何使用EntityListIterator

    當(dāng)我們通過EntityListIterator迭代訪問數(shù)據(jù)時, 通常是這樣:

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


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

    在你完成你的操作后,要記得關(guān)閉此迭代

    productsELI.close();

    * 如何查詢無重結(jié)果集

    當(dāng)前只能通過list iterator方法并指定EntityFindOptions參數(shù),示例如下:

         listIt = delegator.findListIteratorByCondition(entityName, findConditions,
                
    null, // EntityConditions參數(shù)
                 fieldsToSelectList,
                 fieldsToOrderByList,  
                
                
    //關(guān)鍵部分.   第一個true表示"specifyTypeAndConcur"
                
    // 第二個true指完是一個濾重查詢.   顯然在實體引擎中只能通過這個方法來進(jìn)行濾重查詢
                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}"/>
         .

    原文:
    http://hi.baidu.com/longer84/blog/item/dbf027cf6e58933af9dc6117.html
    posted on 2012-03-08 08:32 hellxoul 閱讀(2262) 評論(1)  編輯  收藏 所屬分類: OFBiz

    FeedBack:
    # re: OFBiz實體引擎開發(fā)1
    2015-04-02 14:33 | 葉小謀
    <key-map>節(jié)點定義關(guān)聯(lián)中使用到的字段.field-name指向本實體內(nèi)的引用字段,rel-field-name定義關(guān)聯(lián)的實體字段,你可以通過多個字段組合關(guān)聯(lián)-------多字段關(guān)聯(lián)是定義多個key-map 節(jié)點嗎?  回復(fù)  更多評論
      

    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲色四在线视频观看| 亚洲AV无码成人精品区日韩| 一色屋成人免费精品网站| 亚洲欧洲专线一区| 亚洲精品无码永久在线观看你懂的| 在线观看的免费网站无遮挡| 精品国产亚洲AV麻豆| 亚洲AV日韩AV天堂一区二区三区 | 日韩精品免费在线视频| 国产亚洲精aa在线看| 狠狠亚洲狠狠欧洲2019| 97视频热人人精品免费| www成人免费视频| 亚洲黄页网在线观看| 亚洲精品二区国产综合野狼| 性感美女视频免费网站午夜 | 成年女人午夜毛片免费看| 91视频免费网站| 亚洲中文字幕一二三四区| 国产AV无码专区亚洲精品| 成人免费在线观看网站| 青青草原1769久久免费播放| 国产精品自拍亚洲| 亚洲日本国产乱码va在线观看| 亚洲午夜国产片在线观看| 最近中文字幕mv免费高清电影 | 中文字幕在线视频免费| 国产精品久久久久久亚洲影视| 亚洲精品偷拍无码不卡av| 亚洲热线99精品视频| 四虎影在线永久免费观看| 可以免费看黄的网站| 久久午夜伦鲁片免费无码| 国产成人精品免费视频大全| 亚洲高清国产拍精品熟女| 国产午夜亚洲精品国产| 亚洲视频免费在线播放| 亚洲Av熟妇高潮30p| 久久亚洲中文字幕精品一区四| 国产免费黄色大片| 成年女人免费视频播放77777|