1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
CriteriaBuilder qBuilder = em.getCriteriaBuilder();
CriteriaQuery<T> qDef = qBuilder.createQuery(getObjectClass());
Root<T> qRoot = qDef.from(getObjectClass());
Join<T, Premises> joinPremises = qRoot.join("premises");
Join<Premises, ConcretePerimeterPortfolioElement> joinPerimeterPortfolioElt = joinPremises
.join("perimeterPortfolioElt");
List<Predicate> predicateList = new ArrayList<Predicate>();
predicateList.add(qBuilder.equal(joinPerimeterPortfolioElt.get("id").<SphUser> get("user"), user));
predicateList.add(qBuilder.equal(joinPerimeterPortfolioElt.<Boolean> get("inPortfolio"), inPortfolio));
Predicate[] predicates = new Predicate[predicateList.size()];
predicates = predicateList.toArray(predicates);
qDef.where(qBuilder.and(predicates));
if (null != orderBy) {
qDef.orderBy(ascending ? qBuilder.asc(qRoot.get(orderBy)) : qBuilder.desc(qRoot.get(orderBy)));
}
TypedQuery<T> query = em.createQuery(qDef.select(qRoot)); |