1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
public TArtist findArtistById(String id) {
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery<TArtist> query = cb.createQuery(TArtist.class);
Root<TArtist> artistRoot = query.from(TArtist.class);
Subquery<TEvent> subquery = query.subquery(TEvent.class);
Root<TEvent> eventRoot = subquery.from(TEvent.class);
subquery.select(eventRoot);
subquery.correlate(artistRoot);
subquery.where(cb.greaterThan(eventRoot.<Date> get("eventDate"),new Date()));
query.select(artistRoot);
query.where(cb.and(
cb.equal(artistRoot.<String> get("id"),id),
cb.exists(subquery))
);
return entityManager.createQuery(query).getSingleResult(); |
Partager