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?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den trick zu tun, dies ist wieder ein Tupel mit einem altmodischen Verbindung zwischen dem Lager und der StockGroup, wie diese:
Tupel ist dann nicht vollständig typsicher, aber Sie erreichen es von der Lage (oder alias, wenn Sie schon angesichts Ihrer select-Ausdrücke oder Wurzeln ein alias):
Gibt es eine guter Artikel bei IBM DeveloperWorks auf JPA2 Typesafe Queries.
Glück in Ihrer JPA2 Bemühungen!