【问题标题】:Service Builder Liferay Relationships服务生成器 Liferay 关系
【发布时间】:2016-09-03 14:12:58
【问题描述】:

我有“存储”portlet:

我可以点击“添加图书”:

但我需要有机会将作者姓名添加到我的书中。所以我创建了新项目,带有新实体“作者”的新服务生成器,现在我也可以添加作者了。但是,当我单击“添加书籍”时,如何使用现有作者制作下拉菜单?如何将该字段与新表绑定 - “作者”?

【问题讨论】:

    标签: many-to-many liferay crud liferay-service-builder


    【解决方案1】:

    您不需要为作者创建另一个项目,在与书籍实体相同的服务构建器中添加作者实体并添加对另一个将保存书籍和作者主键的表的引用。 service.xml 可能是:

    <service-builder package-path="com.myproject.db">
    <author>SO</author>
    <namespace>myp</namespace>
    <entity name="Book" local-service="true" remote-service="true" cache-enabled="false">
    <column name="bookId" type="long" primary="true" />
    <column name="name" type="String" />
    <column name="description" type="String" />
    <column name="price" type="long" />
    <column name="author" type="Collection" entity="Author" mapping-table="Author_Books"/>
    </entity>
    <entity name="Author" local-service="true" remote-service="true" cache-enabled="false">
    <column name="authorId" type="long" primary="true" />
    <column name="authorName" type="String" />
    <column name="books" type="Collection" entity="Book" mapping-table="Author_Books" />
    </entity>
    </service-builder>
    

    当您部署此 portlet 时,它将创建另一个表 myp_Author_Books,该表将具有 authorIdbookId 的组合键。 比在你的书本形式的渲染方法中添加

    List<Author> authorList=AuthorLocalServiceUtil.getAuthor(0, AuthorLocalServiceUtil.getAuthorCount()); renderRequest.addAttribute("listAuthor",authorList )

    并在 jsp 中使用此属性与 c:forEachaui:select 来创建您的下拉菜单,例如:

    <aui:select name="author" label="Author Name">
        <c:forEach var="currAuthor" items="${listAuthor}">
            <aui:option value="${currAuthor.authorId}" label=" ${student.authorName}"></aui:option>
        </c:forEach>
    </aui:select>
    

    【讨论】:

    • 谢谢你的回答,我投票给你!但我还有一个问题:我应该粘贴什么而不是&lt;aui:input name="authorName" label="Author Name"/&gt; 来制作下拉菜单?我是新手,看不懂
    • 刚刚编辑了我的答案以提供有关 jsp 部分的线索,希望对您有所帮助!
    • 如果我说这是一个多对多关系模型,我错了吗?尽管在这种情况下很实用,但如何建模一对多关系?我的意思是,假设我希望一个人有多个地址(一个是家庭地址,另一个是工作地址​​等) - 我应该如何映射这个?一种方法可能是使用 Collection 设置,它将与它们一起返回一个数组,但是如果我想在 Person 的 Entity 中有多个字段并且每个字段都是 Address Entity 的 FK 怎么办?有可能吗?
    猜你喜欢
    • 2014-03-08
    • 2017-07-13
    • 2023-02-16
    • 2013-11-27
    • 2016-06-04
    • 2012-08-24
    • 1970-01-01
    • 2010-09-14
    • 2020-09-01
    相关资源
    最近更新 更多