public void addIdParamPredicate(FullQueryBuilder<?, ?> criteriaBuilder) { if (viewRootExpression != null && viewRootExpression.charAt(0) != ':') { if (viewRootParamName != null) { criteriaBuilder.where(viewRootExpression).eqExpression(":" + viewRootParamName); } else { criteriaBuilder.where(viewRootExpression + '.' + viewRootIdPath).eqExpression(":" + getIdParamName()); } } }
@Override public void addBatchPredicate(FullQueryBuilder<?, ?> criteriaBuilder) { if (viewRootExpression == CORRELATION_EMBEDDING_VIEW_ALIAS) { criteriaBuilder.innerJoinOn(originalViewRootExpression, viewRootEntityType, CORRELATION_EMBEDDING_VIEW_ALIAS) .on(originalViewRootExpression + "." + viewRootIdPath).eqExpression(CORRELATION_EMBEDDING_VIEW_ALIAS + "." + viewRootIdPath) .end(); } }
public void addBatchPredicate(FullQueryBuilder<?, ?> criteriaBuilder) { if (viewRootExpression == CORRELATION_VIEW_ROOT_ALIAS) { criteriaBuilder.innerJoinOn(originalViewRootExpression, viewRootEntityType, CORRELATION_VIEW_ROOT_ALIAS) .on(originalViewRootExpression + "." + viewRootIdPath).eqExpression(CORRELATION_VIEW_ROOT_ALIAS + "." + viewRootIdPath) .end(); } }
@Override public <T> List<T> findAll(EntityViewSetting<T, ? extends QueryBuilder<T, ?>> setting) { CriteriaBuilder<Bucket> cb = cbf.create(em, Bucket.class) .where("deleted").eqExpression("false"); return evm.applySetting(setting, cb).getResultList(); }
@Override public Bucket findByName(String bucketName) { try { return cbf.create(em, Bucket.class) .where("id").eq(bucketName) .where("deleted").eqExpression("false") .getSingleResult(); } catch (NoResultException ex) { return null; } }
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(); } }
@Override public <T> T findByName(String bucketName, EntityViewSetting<T, ? extends QueryBuilder<T,?>> setting) { try { CriteriaBuilder<Bucket> cb = cbf.create(em, Bucket.class) .where("id").eq(bucketName) .where("deleted").eqExpression("false"); return evm.applySetting(setting, cb).getSingleResult(); } catch (NoResultException ex) { return null; } }
@Override public <T> List<T> findByAccountId(long accountId, EntityViewSetting<T, ? extends QueryBuilder<T,?>> setting) { CriteriaBuilder<Bucket> cb = cbf.create(em, Bucket.class) .where("owner.id").eq(accountId) .where("deleted").eqExpression("false"); return evm.applySetting(setting, cb).getResultList(); }
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(); } }
updateCb.setExpression(mapping, ":element"); updateCb.setWhereExpression(ownerIdWhereFragment); updateCb.where("KEY(" + mapping + ")").eqExpression(":key"); Query query = updateCb.getQuery();
CriteriaBuilder<Bucket> cb = cbf.create(em, Bucket.class) .where("id").eq(bucketName) .where("deleted").eqExpression("false");
@Override public <T> List<T> findByAccountIdAndStorageName(long accountId, String storageName, EntityViewSetting<T, ? extends QueryBuilder<T,?>> setting) { CriteriaBuilder<Bucket> cb = cbf.create(em, Bucket.class) .from(Bucket.class) .where("owner.id").eq(accountId) .where("deleted").eqExpression("false") .where("storage.id.name").eq(storageName); return evm.applySetting(setting, cb).getResultList(); }
updateCb.setExpression(mapping, ":element"); updateCb.setWhereExpression(ownerIdWhereFragment); updateCb.where("INDEX(" + mapping + ")").eqExpression(":idx"); Query query = updateCb.getQuery();
public <T> List<T> getCatHierarchy(Integer catId, EntityViewSetting<T, CriteriaBuilder<T>> setting) { CriteriaBuilder<Tuple> cb = cbf.create(emHolder.getEntityManager(), Tuple.class) .withRecursive(CatHierarchyCTE.class) .from(Cat.class) .bind("id").select("id") .bind("motherId").select("mother.id") .bind("fatherId").select("father.id") .bind("generation").select("0") .where("id").eqExpression(catId.toString()) .unionAll() .from(Cat.class, "cat") .from(CatHierarchyCTE.class, "cte") .bind("id").select("cat.id") .bind("motherId").select("cat.mother.id") .bind("fatherId").select("cat.father.id") .bind("generation").select("cte.generation + 1") .whereOr() .where("cat.id").eqExpression("cte.motherId") .where("cat.id").eqExpression("cte.fatherId") .endOr() .end() .from(Cat.class, "cat") .innerJoinOn(CatHierarchyCTE.class, "cte").on("cte.id").eqExpression("cat.id").end() .orderByAsc("cte.generation"); return evm.applySetting(setting, cb).getResultList(); }
public <T> List<T> getCatHierarchy(Integer catId, EntityViewSetting<T, CriteriaBuilder<T>> setting) { CriteriaBuilder<Tuple> cb = cbf.create(emHolder.getEntityManager(), Tuple.class) .withRecursive(CatHierarchyCTE.class) .from(Cat.class) .bind("id").select("id") .bind("motherId").select("mother.id") .bind("fatherId").select("father.id") .bind("generation").select("0") .where("id").eqExpression(catId.toString()) .unionAll() .from(Cat.class, "cat") .from(CatHierarchyCTE.class, "cte") .bind("id").select("cat.id") .bind("motherId").select("cat.mother.id") .bind("fatherId").select("cat.father.id") .bind("generation").select("cte.generation + 1") .whereOr() .where("cat.id").eqExpression("cte.motherId") .where("cat.id").eqExpression("cte.fatherId") .endOr() .end() .from(Cat.class, "cat") .innerJoinOn(CatHierarchyCTE.class, "cte").on("cte.id").eqExpression("cat.id").end() .orderByAsc("cte.generation"); return evm.applySetting(setting, cb).getResultList(); }
public <T> List<T> getCatHierarchy(Integer catId, EntityViewSetting<T, CriteriaBuilder<T>> setting) { CriteriaBuilder<Tuple> cb = cbf.create(emHolder.getEntityManager(), Tuple.class) .withRecursive(CatHierarchyCTE.class) .from(Cat.class) .bind("id").select("id") .bind("motherId").select("mother.id") .bind("fatherId").select("father.id") .bind("generation").select("0") .where("id").eqExpression(catId.toString()) .unionAll() .from(Cat.class, "cat") .from(CatHierarchyCTE.class, "cte") .bind("id").select("cat.id") .bind("motherId").select("cat.mother.id") .bind("fatherId").select("cat.father.id") .bind("generation").select("cte.generation + 1") .whereOr() .where("cat.id").eqExpression("cte.motherId") .where("cat.id").eqExpression("cte.fatherId") .endOr() .end() .from(Cat.class, "cat") .innerJoinOn(CatHierarchyCTE.class, "cte").on("cte.id").eqExpression("cat.id").end() .orderByAsc("cte.generation"); return evm.applySetting(setting, cb).getResultList(); }