code: protected void bindComponent(Component component, Embedded property,
                                   boolean isNullable, InFlightMetadataCollector mappings, String sessionFactoryBeanName) {
          component.setEmbedded(true);
          Class<?> type = property.getType();
          String role = qualify(type.getName(), property.getName());
          component.setRoleName(role);
          component.setComponentClassName(type.getName());
  
          PersistentEntity domainClass = property.getAssociatedEntity();
          evaluateMapping(domainClass, defaultMapping);
          final List<PersistentProperty> properties = domainClass.getPersistentProperties();
          Table table = component.getOwner().getTable();
          PersistentClass persistentClass = component.getOwner();
          String path = property.getName();
          Class<?> propertyType = property.getOwner().getJavaClass();
  
          for (PersistentProperty currentGrailsProp : properties) {
              if (currentGrailsProp.equals(domainClass.getIdentity())) continue;
              if (currentGrailsProp.getName().equals(GormProperties.VERSION)) continue;
  
              if (currentGrailsProp.getType().equals(propertyType)) {
                  component.setParentProperty(currentGrailsProp.getName());
                  continue;
              }
  
              bindComponentProperty(component, property, currentGrailsProp, persistentClass, path,
                      table, mappings, sessionFactoryBeanName);
          }
      }
docs: Binds a Hibernate component type using the given GrailsDomainClassProperty instance
  
  @param component  The component to bind
  @param property   The property
  @param isNullable Whether it is nullable or not
  @param mappings   The Hibernate Mappings object
  @param sessionFactoryBeanName  the session factory bean name