code: CompositeManyToOne buildCompositeManyToOneOneToMany(Entity entity, final List<Attribute> fromAttributes, ForeignKey fk) {
          Entity targetEntity = getTargetEntity(fk.getImportedKey(), fromAttributes.get(0).getColumnConfig());
          List<Attribute> targetAttributes = getTargetAttributes(fk, targetEntity);
  
          // composite MANY TO ONE + ONE TO MANY
          Namer targetNamer = relationUtil.getManyToOneNamer(fromAttributes.get(0), targetEntity.getModel());
          Namer inverseNamer = relationUtil.getOneToManyNamer(fromAttributes.get(0).getColumnConfig(), entity.getModel());
  
          CompositeManyToOne m2o = new CompositeManyToOne(inverseNamer, targetNamer, fromAttributes, entity, targetEntity, targetAttributes) {
              @Override
              protected AbstractRelation buildInverse() {
                  CompositeOneToMany co2m2 = new CompositeOneToMany(getTo(), getFrom(), getToAttributes(), getToEntity(), getFromEntity(), getFromAttributes());
                  OneToManyConfig o2mConfig = fromAttributes.get(0).getColumnConfig().getOneToManyConfig();
                  setLabelPlural(o2mConfig, co2m2);
                  initDisplayOrderAsString(o2mConfig, co2m2);
                  configureActions(co2m2, cfg().getDefaultOneToManyConfig(), o2mConfig);
                  return co2m2;
              }
          };
  
          ManyToOneConfig m2oConfig = fromAttributes.get(0).getColumnConfig().getManyToOneConfig();
          setLabelSingular(m2oConfig, m2o);
          configureActions(m2o, cfg().getDefaultManyToOneConfig(), m2oConfig);
          return m2o;
      }
docs: ---------------------------------------------------