4.2.2.2. One-to-Many: два уровня вложенности
Композиция может быть более глубокой и состоять из двух уровней вложенности. Усложним приведенный выше пример, добавив сущность MeetingPoint, описывающую место встречи у терминала аэропорта:
 
 
  Теперь сущность Terminal содержит атрибут meetingPoints - коллекцию экземпляров MeetingPoint. Для того, чтобы все три сущности представляли собой единую композицию и редактировались совместно, нужно в дополнение к описанному в предыдущем разделе выполнить следующее:
-  Terminal.java - атрибут meetingPointsклассаTerminalсодержит аннотации@Compositionи@OnDeleteаналогично атрибутуterminalsклассаAirport.
-  views.xml - представление terminal-meetingPoints-viewсущностиTerminalсодержит атрибут-коллекциюmeetingPoints. Данное представление используется в представленииairport-terminals-meetingPoints-viewсущностиAirport.
-  airport-edit.xml - дескриптор экрана редактирования Airportсодержит источники данных для экземпляраAirportи вложенных сущностей на всю глубину композиции (airportDs>terminalsDs>meetingPointsDs).WarningИсточник данных meetingPointsDsздесь не связан ни с какими визуальными компонентами, однако он необходим для корректной работы совместного редактирования композиции.
-  terminal-edit.xml - XML-дескриптор экрана редактирования терминала в свою очередь определяет вложенный источник данных и соответствующую таблицу для коллекции meetingPoints.
В результате измененные экземпляры MeetingPoint, так же как и экземпляры Terminal, будут сохраняться в базу данных только вместе с экземпляром Airport в одной транзакции.