OFBiz實體引擎開發烹調書 一

2021-08-22 20:01:15 字數 1508 閱讀 5396

* 保持實體名稱少於25個字元

這個限制主要是為了oracle只支援30字元以內的資料庫物件名稱,再加上ofbiz會自動在單詞之間加上"_",所以就得出了這麼個限制.

* 關聯的工作方式

它們定義於entitymodel.xml檔案中的段,示例如下:

type這個屬性標籤定義關聯型別: "one"表示一對一,"many"表示從此實體引出的一對多關係

fk-name的屬性值是資料庫外鍵名.為自己的外來鍵命名是乙個好的習慣,雖然如果你不設定此屬性,ofiz也會自己建外建.

rel-entity-name的屬性值指向關聯的實體名稱

title用來區分兩個實體之間的多重關係

節點定義關聯中使用到的字段.field-name指向本實體內的引用字段,rel-field-name定義關聯的實體字段,你可以通過多個字段組合關聯

當你訪問乙個關聯,你可以使用title+entityname作為引數呼叫.getrelated("")或.getrelatedone("")方法.在關聯為"many"時使用.getrelated("")是恰當的,因為它返回乙個list,同樣在關聯為"one"時通過.getrelatedone("")方法獲得乙個值.

view-entities的功能非常強大,它允許你可以建立乙個join-like查詢,即使你的資料庫不支援join.

關於你資料庫的join語法存放在entityengine.xml的datasource節點下的join-style屬性中.

當你通過節點將兩上實體連線起來時,記住:

1. 實體名稱順序是重要的

2. 預設的連線方式是inner join(即同樣的值存在於兩個實體類中),外連線需要使用rel-optional="true"

如果多個實體中擁有相同的欄位名稱,比如statusid,結果集中的statusid使用第乙個實體中的該列,其它實體中的同名列將被丟棄.如果你想要同時獲得這些列,你需要通過在其之前加入節點,乙個方式是使用節點來為不同實體的同名字段起別名,示例:

另一種方法是在節點中使用,如下:

這樣也可以排除掉很多不打算使用到的資訊,特別是在乙個非常大的表中查詢時.

如果你打算執行類似於以下的查詢語句時:

select count(visitid) from  group by trackingcodeid where fromdate > '2005-01-01'

需要包含欄位visitid以及function="count" 標籤,trackingcodeid需加上group-by="true"標籤,fromdate需要加上group-by="false"標籤

在你進行查詢時,有一件非常重要的事情需要注意,比如說delegator.findbycondition方法,你必須指定檢出的字段列表,並且你不能指定fromdate欄位,否則你將得到乙個錯誤.這就是為webtools不能夠使用view-entities來檢視的原因.

未完待續》

ofbiz實體引擎 一 獲取Delegator

public abstract class delegato ctory implements factory catch executionexception e catch interruptedexception e author 鄭小康 根據delegatorname獲取future如果為空...

OFBIZ 例項開發 一

注意 系統環境microsoft windows 7 此版本適用於ofbiz 16.11.02 ofbiz目錄hot deploy資料夾,目的是讓開發者擴充套件開發自己的元件存放處,這裡我開發乙個hello world例子元件 1.在hot deploy 新建hello資料夾 2.在hot depl...

聊一聊引擎的開發

昨天和同事無意中聊到開發引擎使不是一件容易的事情。我想首先需要搞清楚的是什麼是引擎。早在上世紀80,90年代,那時候的遊戲開發都是從頭來做,沒有什麼引擎,後來一些聰明的開發者把 個個遊戲中共用的部分獨立出來,包裝成了乙個函式庫並提供一組api共二次開發者呼叫,這邊有了引擎。也就是說引擎的本質概念就是...