@Override
 public EntityTypeImpl getEntityTypeByName(String entityName) {
   final EntityTypeImpl entityType = metamodel.getEntityTypeByName(entityName);
   if (entityType == null) {
     throw new IllegalArgumentException("[" + entityName + "] did not refer to EntityType");
   }
   return entityType;
 }
  @SuppressWarnings("unchecked")
  private void applyNamedEntityGraphs(Collection<NamedEntityGraphDefinition> namedEntityGraphs) {
    for (NamedEntityGraphDefinition definition : namedEntityGraphs) {
      final EntityType entityType = metamodel.getEntityTypeByName(definition.getJpaEntityName());
      final EntityGraphImpl entityGraph =
          new EntityGraphImpl(definition.getRegisteredName(), entityType, this);

      final NamedEntityGraph namedEntityGraph = definition.getAnnotation();

      if (namedEntityGraph.includeAllAttributes()) {
        for (Object attributeObject : entityType.getAttributes()) {
          entityGraph.addAttributeNodes((Attribute) attributeObject);
        }
      }

      if (namedEntityGraph.attributeNodes() != null) {
        applyNamedAttributeNodes(namedEntityGraph.attributeNodes(), namedEntityGraph, entityGraph);
      }

      entityGraphs.put(definition.getRegisteredName(), entityGraph);
    }
  }