2017-04-26 34 views
2

我有一个与Liferay Service Builder相关的问题。我想在创建的Join表中创建与自定义列的多对多关系。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) 
); 

我怎么可能还自动创建在JOIN表自定义colums像状态布尔 。它应该看起来像这样到底:

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

感谢您的任何帮助。

回答

0

有两种方法来解决这个问题:

  1. 您可以通过添加您的布尔列手动修改连接表(在数据库上执行sql脚本:ALTER TABLE yourJoinedTable ADD yourBooleanColumn BOOLEAN NOT NULL;),然后定义自定义SQL /本地查询IN SERVICE BUILDER使用这个连接表。
  2. (如果您希望Service Builder以其他表格的形式处理此连接表)将其定义为您的service.xml中的实体,以便您可以在定义2 OneToMany关系后轻松使用它“右侧“和”左侧“(假设ManyToMany =”等于“= oneToMany左侧& & ManyToOne右侧)。