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 買禮物
          深奧呀~~  回復  更多評論
            

          主站蜘蛛池模板: 儋州市| 梁河县| 焦作市| 宁德市| 上虞市| 星座| 崇仁县| 马边| 西乡县| 含山县| 惠水县| 府谷县| 哈巴河县| 湘潭县| 临夏市| 灵宝市| 梅州市| 兴安县| 波密县| 五华县| 辛集市| 呼图壁县| 容城县| 来宾市| 通河县| 山东| 泽普县| 乐昌市| 旌德县| 奇台县| 台北县| 阳朔县| 如皋市| 施甸县| 大洼县| 沾化县| 永春县| 汾阳市| 建始县| 清镇市| 德钦县|