Wie kann ich abrufen, die mehrere Objekte mit JPA?

Ich bin mit JPA2/hibernate mit diesen Daten Modell:

class Stock {
  @ManyToOne
  private StockGroup stockGroup;
  private boolean visible;
}
class StockGroup {
  @OneToMany(mappedBy = "stockGroup")
  private List<Stock> stocks;
}

Ich würde gerne abrufen StockGroup mit einer Aktie, wo visible==true.

Ich habe diese fehlerhafte 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);

//This becomes a cartesian product :(
List<StockGroup> l = em.createQuery(q.where(p)).getResultList();   
//Stocks are not filtered on visible :(
l.get(0).getStocks();

Ist es möglich, zum abrufen der StockGroup und Bedarfs-Gegenständen mit einer CriteriaQuery oder kann JPA füllen nur eine Art auf einmal? Oder kann ich einige Kriterien bei der .getStocks() gefüllt ist faul?

InformationsquelleAutor Cojones | 2011-01-11
Schreibe einen Kommentar