Terry.Li-彬

          虛其心,可解天下之問;專其心,可治天下之學;靜其心,可悟天下之理;恒其心,可成天下之業。

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            143 隨筆 :: 344 文章 :: 130 評論 :: 0 Trackbacks
           

          liferay中生成one to many 關系說明

          1:在service.xml中配置

          For example

          <column

                 name="shoppingItemPrices"

                 type="Collection"

                 entity="ShoppingItemPrice"

                 mapping-key="itemId"

          />

          說明: entitymapping-key屬性被指定將建立一個一對多的關系。

          2:運行ant build

                 生成相關文件

          3:在生成的實體實現類中,如ShoppingItemImp.java,新增getShoppingItemPrice()方法

                 For example

                 public List getItemPrices()

                 throws PortalException, SystemException {

          /*此處return2種寫法

          第一種是要求在關系實體中定義根據關聯實體id進行查詢的方法,如:

          */

          return ShoppingItemPriceLocalServiceUtil.getItemPrices(getItemId());

          /*

          第二種是通過業務層代理類獲的實體的持久類實例進行操作

          */

          return ActiveEntryLocalServiceUtil.getActiveEntryPersistence().getCheckItemEntries(this.getActiveId());

              }

          4:再次運行 ant build

          如此便可在使用實體的時候直接獲取關聯對象實體

          如:

          List list = ActiveEntry.getCheckItemEntries ();

          如果要在hbm配置文件中生成一對多關系描述,則需修改freemarker模板文件

          文件路徑:com/liferay/portal/tool/servicebuilder/dependencies/hbm_xml.flt

          (如果對其他生成文件內容做調整,也可修改其他對應的模板文件)

          修改為如下內容(也可直接copy

          <#list entities as entity>

              <#if entity.hasColumns()>

                 <class name="${packagePath}.model.impl.${entity.name}Impl" table="${entity.table}">

                     <cache usage="read-write" />

                     <#if entity.hasCompoundPK()>

                        <composite-id name="primaryKey" class="${packagePath}.service.persistence.${entity.name}PK">

                            <#assign pkList = entity.getPKList()>

                            <#list pkList as column>

                               <key-property name="${column.name}"

                               <#if column.name != column.DBName>

                                   column="${column.DBName}"

                               </#if>

                               />

                            </#list>

                        </composite-id>

                     <#else>

                        <#assign column = entity.getPKList()?first>

                        <id name="${column.name}"

                            <#if column.name != column.DBName>

                               column="${column.DBName}"

                            </#if>

                            type="<#if !entity.hasPrimitivePK()>java.lang.</#if>${column.type}">

                            <#if column.idType??>

                               <#assign class = serviceBuilder.getGeneratorClass("${column.idType}")>

                               <#if class == "class">

                                   <#assign class = column.IdParam>

                               </#if>

                            <#else>

                               <#assign class = "assigned">

                            </#if>

                            <generator class="${class}"

                            <#if class == "sequence">

                                   <param name="sequence">${column.IdParam}</param>

                               </generator>

                            <#else>

                               />

                            </#if>

                        </id>

                     </#if>

                     <#list entity.columnList as column>

                        <#if column.EJBName??>

                            <#assign ejbName = true>

                        <#else>

                            <#assign ejbName = false>

                        </#if>

                        <#if !column.isPrimary() && !column.isCollection() && !ejbName>

                            <property name="${column.name}"

                            <#if column.name != column.DBName>

                               column="${column.DBName}"

                            </#if>

                            <#if column.isPrimitiveType() || column.type == "String">

                                type="com.liferay.util.dao.hibernate.${serviceBuilder.getPrimitiveObj("${column.type}")}Type"

                            </#if>

                            />

                        </#if>

                        <#if !column.isPrimary() && column.isCollection()>

                                

                            <#if column.isMappingOneToMany()>

                                   <set name="${column.name}" lazy="true">

                                   <key column="${column.getMappingKey()}"/>

                                   <one-to-many class="${packagePath}.service.persistence.${column.EJBName}" />

                                   </set>

                              </#if>

                             

                        </#if>

                     </#list>

                 </class>

              </#if>

          </#list>

          posted on 2008-12-18 08:39 禮物 閱讀(832) 評論(1)  編輯  收藏 所屬分類: Liferay

          評論

          # re: 在liferay中生成one to many 關系說明 2009-09-09 10:01 買禮物
          深奧呀~~  回復  更多評論
            

          主站蜘蛛池模板: 循化| 望都县| 翼城县| 鄢陵县| 鹤壁市| 正蓝旗| 榕江县| 永定县| 迁西县| 长泰县| 桐庐县| 济源市| 密云县| 民丰县| 佛教| 湾仔区| 长武县| 屏山县| 台前县| 饶阳县| 天水市| 饶平县| 鹿泉市| 富顺县| 武川县| 晴隆县| 德安县| 六枝特区| 东宁县| 旬邑县| 阿拉善右旗| 甘南县| 上林县| 常熟市| 阆中市| 康乐县| 壶关县| 汤原县| 扎兰屯市| 通许县| 方城县|