Skip to content

Instantly share code, notes, and snippets.

@dashorst
Last active August 23, 2019 14:07
Show Gist options
  • Save dashorst/8e00f8d1cf0e642802ce1c4233cfb5a4 to your computer and use it in GitHub Desktop.
Save dashorst/8e00f8d1cf0e642802ce1c4233cfb5a4 to your computer and use it in GitHub Desktop.
private class JPA {
public List<Lichting> lichtingenVan(Onderwijssoort eenOnderwijssoort, Schooljaar vanafSchooljaar,
Schooljaar totSchooljaar, int eenLeerjaar) {
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Lichting> cq = cb.createQuery(Lichting.class);
Root<Lichting> l = cq.from(Lichting.class);
Subquery<Long> sq = cq.subquery(Long.class);
Root<LichtingSchooljaar> ls = sq.from(LichtingSchooljaar.class);
List<Predicate> criteria = new ArrayList<>();
Join<LichtingSchooljaar, Schooljaar> sj = ls.join(LichtingSchooljaar_.schooljaar);
if (vanafSchooljaar != null) {
criteria.add(cb.greaterThanOrEqualTo(sj.get(Schooljaar_.vanafDatum), vanafSchooljaar.getVanafDatum()));
}
if (totSchooljaar != null) {
criteria.add(cb.lessThanOrEqualTo(sj.get(Schooljaar_.totDatum), totSchooljaar.getTotDatum()));
}
criteria.add(cb.equal(ls.get(LichtingSchooljaar_.leerjaar), eenLeerjaar));
sq.where(cb.and(criteria.toArray(new Predicate[] {})));
sq.select(ls.get(LichtingSchooljaar_.lichting).get(Lichting_.id));
// sq.select(ls.get("lichting"));
cq.where(cb.in(l.get(Lichting_.id)).value(sq),
cb.equal(l.get(Lichting_.onderwijssoort), eenOnderwijssoort));
return em.createQuery(cq).getResultList();
}
public Onderwijssoort onderwijssoortVan(String eenAfkorting) {
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Onderwijssoort> cq = cb.createQuery(Onderwijssoort.class);
Root<Onderwijssoort> root = cq.from(Onderwijssoort.class);
cq.where(cb.equal(root.get(Onderwijssoort_.afkorting), eenAfkorting));
return em.createQuery(cq).getSingleResult();
}
public Schooljaar schooljaarVan(long schooljaar) {
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Schooljaar> cq = cb.createQuery(Schooljaar.class);
Root<Schooljaar> root = cq.from(Schooljaar.class);
cq.where(cb.like(root.get(Schooljaar_.naam), String.valueOf(schooljaar) + "%"));
return em.createQuery(cq).getSingleResult();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment