如何使用Liferay service builder创建一对多关系

如何使用Liferay service builder创建一对多关系,liferay,one-to-many,liferay-service-builder,Liferay,One To Many,Liferay Service Builder,我需要在自定义实体和Liferay默认实体之间定义一对多关系DDMFormInstance。因此,一个MyCustomEntity可以有许多DDM实例。如何操作?您可以定义集合样式列;此外,您还需要在MyCustomEntity和DDMFormInstance之间建立一个映射表,并且还要记住,service builder主要不是ORM工具。因此,开箱即用的功能将会结束 <column entity="User" mapping-table="Users_Groups" name="use

我需要在自定义实体和Liferay默认实体之间定义一对多关系
DDMFormInstance
。因此,一个
MyCustomEntity
可以有许多DDM实例。如何操作?

您可以定义集合样式列;此外,您还需要在
MyCustomEntity
DDMFormInstance
之间建立一个映射表,并且还要记住,service builder主要不是ORM工具。因此,开箱即用的功能将会结束

<column entity="User" mapping-table="Users_Groups" name="users" type="Collection" />


通过将多对多关系重新调整为一对多关系,请参见《工作原理》中的更多内容。这里的挑战是DDMFormInstance是一个现成的Liferay实体,不能为一对多关系向其添加外键。安德烈的答案是最简单的解决方案。使用映射表在service.xml中定义多对多关系,然后使其在MyCustomEntityLocalServiceImpl类中表现为一对多关系。

@VlSh。。你能发布service.xml吗?它是重要的部分?使用liferay实体的诀窍是使用标记,困难的部分是查找他的包路径关于查找包路径:DTD()的提示是“com.liferay.portal.Organization”,如果是Organization。一般来说:在Github上搜索被引用实体的service.xml并在那里找到包路径。(例如,对于AssetCategory,service.xml为,它表示api包path=“com.liferay.asset.kernel”)