這裏是我出現在代碼:如何發現隱多根
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Tuple> q = cb.createTupleQuery();
Root<AA> aa = q.from(AA.class);
q.multiselect(aa.get("id").alias("id"),
articolo.get("a").alias("a"),
articolo.get("b").alias("b"),
articolo.get("c").get("t").alias("c"),
articolo.get("d").alias("d"));
System.out.println("RootCount: "+q.getRoots().size());
Query query = em.createQuery(q);
List<Tuple> list = query.getResultList();
其中AA是映射表和c是CC型項目(在至極CC是另外一個映射表):
好,我不能插入圖像,所以:Tables Schema
c是一個ForeignKey引用該表的CC
所以,上面的代碼將打印「RootCount:1」(只有一個根),但結果荷蘭國際集團的查詢是這樣的:
select aa.id, aa.a, aa.b, cc.t, aa.d from AA aa, CC cc where aa.c=cc.id
所以......兩個根,但q.getRoots()報告只有我一個明確的定義。
我怎樣才能得到真正的根?
添加JPA標記,這不是Hibernate Criteria API,但是JPA 2 Criteria API(即使hibernate是提供者) – 2011-02-15 17:49:31