@SuppressWarnings({ "rawtypes", "unchecked" }) private MetaModelProvider lookupProvider() { PersistenceCommonDescriptor config = (PersistenceCommonDescriptor) getFaceted().getFacet(JPAFacet.class) .getConfig(); List<PersistenceUnitCommon> allPersistenceUnit = config.getAllPersistenceUnit(); String providerName = allPersistenceUnit.size() > 0 ? allPersistenceUnit.get(0) .getProvider() : null; Imported<PersistenceProvider> services = SimpleContainer.getServices(getClass().getClassLoader(), PersistenceProvider.class); for (PersistenceProvider candidate : services) { try { if (Strings.compare(candidate.getProvider(), providerName)) { return candidate.getMetaModelProvider(); } } finally { services.release(candidate); } } // return Hibernate return services.get().getMetaModelProvider(); }