private String createQueryString(EntityViewManagerImpl evm, ManagedViewType<?> subviewType) { EntityMetamodel entityMetamodel = evm.getMetamodel().getEntityMetamodel(); EntityType<?> entityType = entityMetamodel.getEntity(entityClass); // We can't query embeddables if (entityType == null) { return null; } Set<String> fetchJoinableRelations = new HashSet<>(subviewType.getAttributes().size()); addFetchJoinableRelations(fetchJoinableRelations, "", subviewType); CriteriaBuilderFactory cbf = evm.getCriteriaBuilderFactory(); EntityManagerFactory emf = cbf.getService(EntityManagerFactory.class); EntityManager em = emf.createEntityManager(); try { if (fetchJoinableRelations.isEmpty()) { return null; } else { return cbf.create(em, entityClass) .fetch(fetchJoinableRelations.toArray(new String[fetchJoinableRelations.size()])) .where(JpaMetamodelUtils.getSingleIdAttribute(entityType).getName()).eqExpression(":id") .getQueryString(); } } finally { em.close(); } }
private String createQueryString(EntityViewManagerImpl evm, EntityType<?> entityType, Map<String, Map<?, ?>> fetchGraph) { CriteriaBuilderFactory cbf = evm.getCriteriaBuilderFactory(); EntityManagerFactory emf = cbf.getService(EntityManagerFactory.class); EntityManager em = emf.createEntityManager(); try { String[] paths = flatten(fetchGraph); if (paths.length == 0) { return null; } else { return cbf.create(em, entityClass) .fetch(paths) .where(JpaMetamodelUtils.getSingleIdAttribute(entityType).getName()).eqExpression(":id") .getQueryString(); } } finally { em.close(); } }