@Test public void test_criteria_from_fetch_example() { doInJPA( this::entityManagerFactory, entityManager -> { //tag::criteria-from-fetch-example[] CriteriaBuilder builder = entityManager.getCriteriaBuilder(); CriteriaQuery<Phone> criteria = builder.createQuery( Phone.class ); Root<Phone> root = criteria.from( Phone.class ); // Phone.person is a @ManyToOne Fetch<Phone, Person> personFetch = root.fetch( Phone_.person ); // Person.addresses is an @ElementCollection Fetch<Person, String> addressesJoin = personFetch.fetch( Person_.addresses ); criteria.where( builder.isNotEmpty( root.get( Phone_.calls ) ) ); List<Phone> phones = entityManager.createQuery( criteria ).getResultList(); //end::criteria-from-fetch-example[] assertEquals(2, phones.size()); }); }
@Override public <Y> Fetch<X, Y> fetch(PluralAttribute<? super X, ?, Y> attribute, JoinType jt) { return getWrapped().fetch(attribute, jt); }
@Override @SuppressWarnings("hiding") public <X, Y> Fetch<X, Y> fetch(String attributeName) { return getWrapped().fetch(attributeName); }
/** Add all the fetches needed for completely loading the object graph */ protected void addFetches(final Root<PortletEntityImpl> definitionRoot) { definitionRoot .fetch(PortletEntityImpl_.portletPreferences, JoinType.LEFT) .fetch(PortletPreferencesImpl_.portletPreferences, JoinType.LEFT) .fetch(PortletPreferenceImpl_.values, JoinType.LEFT); definitionRoot.fetch(PortletEntityImpl_.windowStates, JoinType.LEFT); }
@Override public <Y> Fetch<X, Y> fetch(SingularAttribute<? super X, Y> attribute, JoinType jt) { return getWrapped().fetch(attribute, jt); }
@Override @SuppressWarnings("hiding") public <X, Y> Fetch<X, Y> fetch(String attributeName, JoinType jt) { return getWrapped().fetch(attributeName, jt); }
@Override public <Y> Fetch<X, Y> fetch(SingularAttribute<? super X, Y> attribute) { return getWrapped().fetch(attribute); }
@Override public <Y> Fetch<X, Y> fetch(PluralAttribute<? super X, ?, Y> attribute) { return getWrapped().fetch(attribute); }
@Override public CriteriaQuery<LocalAccountPersonImpl> apply(CriteriaBuilder cb) { final CriteriaQuery<LocalAccountPersonImpl> criteriaQuery = cb.createQuery(LocalAccountPersonImpl.class); final Root<LocalAccountPersonImpl> accountRoot = criteriaQuery.from(LocalAccountPersonImpl.class); accountRoot .fetch(LocalAccountPersonImpl_.attributes, JoinType.LEFT) .fetch( LocalAccountPersonAttributeImpl_.values, JoinType.LEFT); criteriaQuery.select(accountRoot); return criteriaQuery; } });
@Override public CriteriaQuery<LocalAccountPersonImpl> apply(CriteriaBuilder cb) { final CriteriaQuery<LocalAccountPersonImpl> criteriaQuery = cb.createQuery(LocalAccountPersonImpl.class); final Root<LocalAccountPersonImpl> accountRoot = criteriaQuery.from(LocalAccountPersonImpl.class); accountRoot .fetch(LocalAccountPersonImpl_.attributes, JoinType.LEFT) .fetch( LocalAccountPersonAttributeImpl_.values, JoinType.LEFT); criteriaQuery.select(accountRoot); return criteriaQuery; } });
@Override public CriteriaQuery<LocalAccountPersonImpl> apply(CriteriaBuilder cb) { final CriteriaQuery<LocalAccountPersonImpl> criteriaQuery = cb.createQuery(LocalAccountPersonImpl.class); final Root<LocalAccountPersonImpl> accountRoot = criteriaQuery.from(LocalAccountPersonImpl.class); accountRoot .fetch(LocalAccountPersonImpl_.attributes, JoinType.LEFT) .fetch( LocalAccountPersonAttributeImpl_.values, JoinType.LEFT); criteriaQuery.select(accountRoot); criteriaQuery.where( cb.equal( accountRoot.get(LocalAccountPersonImpl_.name), nameParameter)); return criteriaQuery; } });
@Override public CriteriaQuery<LocalAccountPersonImpl> apply(CriteriaBuilder cb) { final CriteriaQuery<LocalAccountPersonImpl> criteriaQuery = cb.createQuery(LocalAccountPersonImpl.class); final Root<LocalAccountPersonImpl> accountRoot = criteriaQuery.from(LocalAccountPersonImpl.class); accountRoot .fetch(LocalAccountPersonImpl_.attributes, JoinType.LEFT) .fetch( LocalAccountPersonAttributeImpl_.values, JoinType.LEFT); criteriaQuery.select(accountRoot); criteriaQuery.where( cb.equal( accountRoot.get(LocalAccountPersonImpl_.name), nameParameter)); return criteriaQuery; } });
@Override public Company find(String name) { CriteriaBuilder builder = entityManager.getCriteriaBuilder(); CriteriaQuery<Company> query = builder.createQuery(Company.class); Root<Company> root = query.from(Company.class); root.fetch(Company_.cars, JoinType.LEFT); Fetch<Company, Department> departmentFetch = root.fetch(Company_.departments, JoinType.LEFT); Fetch<Department, Employee> employeeFetch = departmentFetch.fetch(Department_.employees, JoinType.LEFT); employeeFetch.fetch(Employee_.address, JoinType.LEFT); departmentFetch.fetch(Department_.offices, JoinType.LEFT); query.select(root).distinct(true); Predicate idPredicate = builder.equal(root.get(Company_.name), name); query.where(builder.and(idPredicate)); return DataAccessUtils.singleResult(entityManager.createQuery(query).getResultList()); }
@Override public Company find(Long id) { CriteriaBuilder builder = entityManager.getCriteriaBuilder(); CriteriaQuery<Company> query = builder.createQuery(Company.class); Root<Company> root = query.from(Company.class); root.fetch(Company_.cars, JoinType.LEFT); Fetch<Company, Department> departmentFetch = root.fetch(Company_.departments, JoinType.LEFT); Fetch<Department, Employee> employeeFetch = departmentFetch.fetch(Department_.employees, JoinType.LEFT); employeeFetch.fetch(Employee_.address, JoinType.LEFT); departmentFetch.fetch(Department_.offices, JoinType.LEFT); query.select(root).distinct(true); Predicate idPredicate = builder.equal(root.get(Company_.id), id); query.where(builder.and(idPredicate)); return DataAccessUtils.singleResult(entityManager.createQuery(query).getResultList()); }
public JoinWrapper createJoinFromJoin(final String joinName, final JoinType joinType) { if (join != null) { final Join innerJoin = join.join(joinName, joinType); return new JoinWrapper(innerJoin); } final Fetch innerJoin = joinFetch.fetch(joinName, joinType); return new JoinWrapper(innerJoin); }
/** * Copy Fetches * * @param from source Fetch * @param to dest Fetch */ public static void copyFetches(Fetch<?, ?> from, Fetch<?, ?> to) { for (Fetch<?, ?> f : from.getFetches()) { Fetch<?, ?> toFetch = to.fetch(f.getAttribute().getName()); // recursively copy fetches copyFetches(f, toFetch); } } }
pf.fetch(StoreApplication_.project, JoinType.LEFT);
pf.fetch(StoreProject_.bts, JoinType.LEFT);