Defining Entity Relationships
Relationships between database entities or Java objects are necessary for most applications. Take Liferay’s Message Boards application as an example. Each Message Board message belongs to a specific Message Board thread. A Message Board thread might also belong to a specific Message Board category.
You can see how the relationship is defined in the application’s service.xml
file:
<entity external-reference-code="group" human-name="message-boards message" local-service="true" name="MBMessage" remote-service="true" trash-enabled="true" uuid="true">
<!-- PK fields -->
<column name="messageId" primary="true" type="long" />
<!-- Group instance -->
<column name="groupId" type="long" />
<!-- Audit fields -->
<column name="companyId" type="long" />
<column name="userId" type="long" />
<column name="userName" type="String" uad-anonymize-field-name="fullName" />
<column name="createDate" type="Date" />
<column name="modifiedDate" type="Date" />
<!-- Other fields -->
<column name="classNameId" type="long" />
<column name="classPK" type="long" />
<column name="categoryId" type="long" />
<column name="threadId" type="long" />
...
The threadId
field referenced in this MBMessage
object has the same name as the primary key in the MBThread
object (not shown above). This creates the relationship between the two objects. A similar relationship can be seen with categoryId
and the MBCategory
object.
Congratulations, now you know how to relate two entities.