4.2.2.2. One-to-Many: Two Levels of Nesting
Composition can be deeper, with up to two nested levels. Let’s extend the previous example by adding a MeetingPoint entity describing a meeting point at an airport terminal:
 
 
  The Terminal entity contains the meetingPoints attribute – a collection of the MeetingPoint instances. In order for all three entities to become a single composition and be edited together, the following should be done in addition to the steps described above:
-  Terminal.java - the meetingPointsattribute of theTerminalclass is marked as@Compositionand@OnDeletesimilarly to theterminalsattribute of theAirportclass.
-  views.xml - the terminal-meetingPoints-viewview of theTerminalclass contains themeetingPointscollection attribute. This view is used in theairport-terminals-meetingPoints-viewview of theAirportentity.
-  airport-edit.xml - the Airportedit screen XML descriptor contains datasources for an instance of theAirportand nested entities for the entire composition (airportDs>terminalsDs>meetingPointsDs).WarningHere, the meetingPointsDsdatasource is not associated with any visual components, however it is needed for correct operation of joint editing of the composition.
-  terminal-edit.xml - the terminal edit screen XML descriptor contains a nested datasource and a corresponding table for the meetingPointscollection.
As a result, the updated instances of the MeetingPoint, as well as the Terminal instances, will be saved to the database only with the Airport instance in the same transaction.