<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

    * 如何為SELECT SUM(QUANTITY - CANCEL_QUANTITY) AS QUANTITY之類的語句設置別名 

      <alias entity-alias="OI" name="quantity" function="sum">
          
    <complex-alias operator="-">
              
    <complex-alias-field entity-alias="OI" field="quantity" default-value="0"/>
              
    <complex-alias-field entity-alias="OI" field="cancelQuantity" default-value="0"/>
          
    </complex-alias>
      
    </alias> 

       SELECT SUM(COALESCE(OI.QUANTITY,'0') - COALESCE(0I.CANCEL_QUANTITY)) AS QUANTITY在結果集包含默認值是一個好的習慣,否則如果有一項為null,那么最終相減的結果就也為null了.
      操作符可以為任何你當前使用數據庫所支持的SQL操作符,比如算術運算符+, -, * 和/ 或者字符串連接符 ||.

      你可以增加function=""標簽來完成在complex-alias-field中的min, max, sum, avg, count, count-distinct, upper 及lower集合運算.  示例, 以上的定義可以用另一種方法表示為:

      <alias entity-alias="OI" name="quantity">
          
    <complex-alias operator="-">
              
    <complex-alias-field entity-alias="OI" field="quantity" default-value="0" function="sum"/>
              
    <complex-alias-field entity-alias="OI" field="cancelQuantity" default-value="0" function="sum"/>
          
    </complex-alias>
      
    </alias>

       即為SELECT (SUM(COALESCE(OI.QUANTITY,'0')) - SUM(COALESCE(OI.CANCEL_QUANTITY,'0'))) AS QUANTITY查詢結果集

    * 我討厭OFBiz的實體引擎,我要自己的JDBC連接!
      好的,以下是你獲得JDBC連接的方法: 

    import org.ofbiz.entity.jdbc.ConnectionFactory;

    String helperName 
    = delegator.getGroupHelperName("org.ofbiz");    // gets the helper (localderby, localmysql, localpostgres, etc.) for your entity group org.ofbiz
    Connection conn = ConnectionFactory.getConnection(helperName); 
    Statement statement 
    = conn.createStatement();
    statement.execute(
    "SELECT * FROM PARTY");
    ResultSet results 
    = statement.getResultSet();

    //  通過普通JDBC 的結果集來操作

    //Alternatively, you can use the SQLProcessor like 
    this:

    SQLProcessor sqlproc 
    = new SQLProcessor(helperName);
    sqlproc.prepareStatement(
    "SELECT * FROM PARTY");
    ResultSet rs1 
    = sqlproc.executeQuery();

    ResultSet rs2 
    = sqlproc.executeQuery("SELECT * FROM PRODUCT");

     你可以查看framework/webtools/webapp/webtools/WEB-INF/actions/entity/EntitySQLProcessor.bsh了解它的使用

    在以下網址你可以獲得相關JavaDoc的內容:
    http://www.opentaps.org/javadocs/version-1.0/framework/api/org/ofbiz/entity/jdbc/SQLProcessor.html
    http://www.opentaps.org/javadocs/version-1.0/framework/api/org/ofbiz/entity/jdbc/ConnectionFactory.html

      *** 請先考慮以下內容: 你放棄數據庫的無關性意味著你在某些方法將無法與框架或其它程序集成.你確定你要這么做嗎?

    獲得更好的做法,請訪問 http://www.opentaps.org/docs/index.php/Using_the_Query_Tool


    * 關于時間比較方法的一些警告

    在你用 GREATER_THAN比較一個 Timestamp類型數據時, 你有可能獲得相同的時間數據: 

    delegator.findByAnd("XXX", UtilMisc.toList(new EntityExpr("fromDate", EntityOperator.GREATER_THAN, "2007-12-31 23:59:59.998")));

     有可能包含fromDate=2007-12-31 23:59:59.998的數據.  (此種情況發生于PostgreSQL 8.1并且GenericDAO 類生成的SQL代碼是'FROM_DATE > ' so 所以我也不明白發生這個問題的原因.) 所以確保安全的方法是, 增加1秒到需要比較的時間中然后使用 GREATER_THAN_EQUAL_TO方法  

    delegator.findByAnd("XXX", UtilMisc.toList(new EntityExpr("fromDate", EntityOperator.GREATER_THAN_EQUAL_TO, "2008-01-01 00:00:00.998")));

     

    * 警告: 在空集合中使用EntityOperator.IN

    請小心如果使用EntityOperator.IN去判斷一個非空集合在一個空集合中的包含項,你有可能獲得一個語法錯誤: 在Derby或者其它一些不為人知的數據庫中可能會出錯.
    所以建議你能在使用EntityOperator.IN之間,通常執行UtilValidate.isNotEmpty方法來判斷一下結果集是否為空

    * 警告: delegator.getNextSubSeqId 不能確保唯一性

    很多實體有很多合成的主鍵.示例OrderItem's 主鍵是orderId + orderItemSeqId.  InventoryItemDetail's 主鍵是inventoryItemId +inventoryItemSeqId.  通常, delegator.getNextSubSeqId 通常是獲得一個序列值,但是在多線程的訪問下有可能無法確保生成的值的唯一性.  此段內容在 http://issues.apache.org/jira/browse/OFBIZ-1636 中有相關文檔記錄.

    當前, 如果有可能多個線程嘗試同時寫入實體組合鍵時,可以使用delegator.getNextSeqId來替代getNextSubSeqId.  (此問題不會發生于OrderItem, 因為它只使用單線程寫入, 但有可能發生于 InventoryItemDetail, 它使用多線程來創建庫存記錄項.)
     

    完>>

    本文檔譯自ofbiz 4.0 cookbooks,本人翻譯,歡迎轉載,請注明出處.
    posted on 2008-10-26 11:30 shanghai_spark 閱讀(1609) 評論(0)  編輯  收藏 所屬分類: opentaps
    主站蜘蛛池模板: 国产精品99久久免费| 久久九九免费高清视频| 国产乱码免费卡1卡二卡3卡| 亚洲国产精品国自产拍AV| 男女拍拍拍免费视频网站| 亚洲人成人网站在线观看| 亚洲A∨精品一区二区三区下载| 性一交一乱一视频免费看| 亚洲熟妇AV一区二区三区浪潮| 久久久久久国产a免费观看黄色大片 | 51视频精品全部免费最新| 7777久久亚洲中文字幕蜜桃 | a拍拍男女免费看全片| 78成人精品电影在线播放日韩精品电影一区亚洲 | 很黄很污的网站免费| 亚洲国产综合精品中文第一区| 国产好大好硬好爽免费不卡| 亚洲午夜精品久久久久久人妖| 69xx免费观看视频| 亚洲gay片在线gv网站| 亚洲国产免费综合| 国产真人无码作爱视频免费| 久久丫精品国产亚洲av不卡| 最近2019年免费中文字幕高清| 亚洲精品亚洲人成在线播放| 国产无遮挡吃胸膜奶免费看视频| 一级特黄录像免费播放中文版| 黑人大战亚洲人精品一区| 99久久人妻精品免费二区| 亚洲三级在线播放| 亚洲AV无码一区二区三区国产 | 中文字幕亚洲无线码| 久久午夜伦鲁片免费无码| 亚洲宅男精品一区在线观看| 免费大黄网站在线观看| 免费国产成人α片| 亚洲精品无码久久久久YW| 久久精品国产亚洲网站| 日韩吃奶摸下AA片免费观看| 一个人看的免费高清视频日本| 亚洲视频一区在线播放|