Liferay Service Builder与自定义列的多对多关系

Liferay Service Builder与自定义列的多对多关系,liferay,liferay-service-builder,Liferay,Liferay Service Builder,我有一个关于Liferay服务生成器的问题。我想在创建的联接表中创建与自定义列的多对多关系 这是my 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

我有一个关于Liferay服务生成器的问题。我想在创建的联接表中创建与自定义列的多对多关系

这是my 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>
如何在联接表中自动创建自定义列,如状态布尔值。最后应该是这样的:

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

谢谢您的帮助。

解决此问题有两种方法:

  • 您可以通过添加布尔列(在数据库上执行sql脚本:
    ALTER table yourJoinedTable ADD yourBooleanColumn boolean NOT NULL;
    )手动修改联接表,然后在SERVICE BUILDER中定义自定义sql/本机查询以使用此联接表
  • (如果希望Service Builder像处理其他表一样处理此联接表)将其定义为Service.xml中的一个实体,以便在定义联接表的“右侧”和“左侧”的2个OneToMany关系(假设ManyToMany=为“相等”)后可以轻松地使用它to=一个左侧和多个右侧)
  • create table mycompany_Registration_Newsletter (
        RegID LONG not null,
        NewsletterID LONG not null,
        Status BOOLEAN,
        primary key (ANID, MMID)
    );