I am using JPA2 / hibernate with this data model:
class Stock {
@ManyToOne
private StockGroup stockGroup;
private boolean visible;
}
class StockGroup {
@OneToMany(mappedBy = "stockGroup")
private List<Stock> stocks;
}
I would like to get a StockGroup containing Stock, where visible==true.
I came with this faulty code:
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<StockGroup> q = cb.createQuery(StockGroup.class);
Root<StockGroup> r = q.from(StockGroup.class);
Join<StockGroup, Stock> j = r.join(StockGroup_.stocks, JoinType.INNER);
Predicate p = cb.equal(j.get(Stock_.visible), true);
List<StockGroup> l = em.createQuery(q.where(p)).getResultList();
l.get(0).getStocks();
Is it possible to get StockGroup and Stock Objects using the same CriteriaQuery or can JPA populate only one type at a time? Or can I add some criteria when .getStocks()filling up lazily?
source
share