2

我有一个关于 Liferay Service Builder 的问题。我想在创建的联接表中创建与自定义列的多对多关系。

这是我的 service.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE service-builder PUBLIC "-//Liferay//DTD Service Builder 6.2.0//EN" "http://www.liferay.com/dtd/liferay-service-builder_6_2_0.dtd">
<service-builder package-path="de.mycompany.mm.services">
    <author>rawdog</author>
    <namespace>mycompany</namespace>

    <entity name="Registration" local-service="true" remote-service="false">
        <column name="RegID" type="long" primary="true"></column>
        <column name="Email" type="String"></column>
        <column name="Hash" type="String"></column>
        <column name="Validate" type="boolean"></column>
        <column name="NewsletterID" type="Collection" entity="Newsletter" mapping-table="Registration_Newsletter"/>
        <finder name="Hash" return-type="Registration">
            <finder-column name="Hash"></finder-column>
        </finder>
    </entity>

    <entity name="Newsletter" local-service="true" remote-service="false">
        <column name="NewsletterID" type="long" primary="true"></column>
        <column name="Name" type="String"></column>
        <column name="Status" type="boolean"></column>
        <column name="RegID" type="Collection" entity="Registration" mapping-table="Registration_Newsletter"/>
    </entity>
</service-builder>

这会自动创建以下 SQL CREATE 语句:

create table mycompany_Registration_Newsletter (
    RegID LONG not null,
    NewsletterID LONG not null,
    primary key (ANID, MMID)
);

我怎么能像Status BOOLEAN这样在 JOIN 表中自动创建自定义列。最后应该是这样的:

create table mycompany_Registration_Newsletter (
    RegID LONG not null,
    NewsletterID LONG not null,
    Status BOOLEAN,
    primary key (ANID, MMID)
);

谢谢你的帮助。

4

1 回答 1

0

你有两种方法可以解决这个问题:

  1. 您可以通过添加布尔列(在您的数据库上执行 sql 脚本:)手动修改连接表ALTER TABLE yourJoinedTable ADD yourBooleanColumn BOOLEAN NOT NULL;,然后在 SERVICE BUILDER 中定义 CUSTOM SQL / NATIVE QUERY 以使用此连接表。
  2. (如果您希望 Service Builder 将此连接表作为其他表处理)将其定义为 service.xml 中的实体,以便在定义 2 OneToMany 关系“右侧”和“连接表的左侧”(假设 ManyToMany = “等于” = oneToMany 左侧 && ManyToOne 右侧)。
于 2018-02-13T19:56:26.597 回答