@Test
  public void allClassMapping() throws Exception {
    Metamodel model = em.getEntityManagerFactory().getMetamodel();
    assertThat(model.getEntities()).as("No entity mapping found").isNotEmpty();

    for (EntityType entityType : model.getEntities()) {
      String entityName = entityType.getName();
      em.createQuery("select o from " + entityName + " o").getResultList();
      logger.info("ok: " + entityName);
    }
  }
 private synchronized void reloadCache(EntityManager em) {
   if (em == null || ref.get() != null) return;
   Metamodel metamodel = em.getMetamodel();
   Map<String, Class<?>> map = new HashMap<>(metamodel.getEntities().size() + 2);
   for (EntityType<?> entity : metamodel.getEntities()) {
     System.out.printf(
         "---  Carregando do Metamodel: %s [%s] \n", entity.getName(), entity.getJavaType());
     map.put(entity.getName(), entity.getJavaType());
   }
   ref = new SoftReference(map);
 }
 @Test
 public void allClassMapping() throws Exception {
   Metamodel model = em.getEntityManagerFactory().getMetamodel();
   for (EntityType<?> entityType : model.getEntities()) {
     String entityName = entityType.getName();
     em.createQuery("select o from " + entityName + " o").getFirstResult();
     logger.info("ok: " + entityName);
   }
 }
 @Override
 public Map<String, Class<Entity>> getTableMap() {
   Map<String, Class<Entity>> map = new HashMap<String, Class<Entity>>();
   Metamodel metamodel = entityManager.getEntityManagerFactory().getMetamodel();
   Set<EntityType<?>> set = metamodel.getEntities();
   for (EntityType<?> entityType : set) {
     Class<Entity> clazz = (Class<Entity>) entityType.getJavaType();
     map.put(entityType.getName(), clazz);
   }
   return map;
 }
  @Before
  public void setUp() throws Exception {
    initMocks(this);
    final EntityType<Foo> foo = mock(EntityType.class);
    when(foo.getName()).thenReturn("foo");
    when(foo.getJavaType()).thenReturn(Foo.class);
    when(metamodel.entity(Foo.class)).thenReturn(foo);
    when(metamodel.getEntities()).thenReturn(new HashSet<EntityType<?>>(Arrays.asList(foo)));

    wrapper = new MetamodelWrapper(metamodel);
  }
 @Override
 public Map<String, Map<String, Class<?>>> getTableColumnMap() {
   Metamodel metamodel = entityManager.getEntityManagerFactory().getMetamodel();
   Set<EntityType<?>> entityTypes = metamodel.getEntities();
   Map<String, Map<String, Class<?>>> tableColumnMap =
       new HashMap<String, Map<String, Class<?>>>();
   for (EntityType<?> type : entityTypes) {
     EntityType<Entity> entityType = (EntityType<Entity>) type;
     Set<SingularAttribute<? super Entity, ?>> singularAttributes =
         entityType.getSingularAttributes();
     Map<String, Class<?>> columnMap = new HashMap<String, Class<?>>();
     for (SingularAttribute<? super Entity, ?> singularAttribute : singularAttributes) {
       columnMap.put(singularAttribute.getName(), singularAttribute.getJavaType());
     }
     tableColumnMap.put(entityType.getName(), columnMap);
   }
   return tableColumnMap;
 }