2009-02-26 37 views
1

我真的很難讓eclipselink.join提取提示在glassfish中工作。Glassfish Eclipselink加入提取不起作用

我有一個Client對象,其中包含Task對象的集合,而Task對象具有WorkPeriod對象的集合。

我的代碼如下所示:

Query query = entityManager.createQuery("select client from Client client left join fetch client.tasks"); 
//Set hint to allow nested fetch joins 
query.setHint("eclipselink.join-fetch","client.tasks.workPeriods"); 
List<Client> clients = query.getResultList(); 

但無論我做什麼,當我設置TOPLINK調試級別到永嘉它表明,這是實際運行SQL是:

SELECT t0.ID, t0.NAME, t1.ID, t1.DESCRIPTION FROM CLIENT t0 LEFT OUTER JOIN (CLIENT_TASK t2 JOIN TASK t1 ON (t1.ID = t2.tasks_ID)) ON (t2.Client_ID = t0.ID) 

顯然不是在執行第三層聯合抓取。

任何人都有這個問題......還是隻有我:-(

任何幫助或提示(沒有雙關語意),將不勝感激。

回答

0

OK,8小時後,沮喪我已經到底了

Glassfish V2不使用EclipseLink作爲持久性提供者,它使用Toplink Essentitals。不幸的是,Toplink essentials不提供一個連接提取提示(我很困惑下面的鏈接讓我覺得它確實如此:https://glassfish.dev.java.net/issues/show_bug.cgi?id=1200雖然這顯然是一個功能請求不是功能)

所以看來,我試圖做的事情是不可能的,如果我想在glassfish中進行多級別的熱切獲取,我將不得不獲得EntityManagers委託並直接使用toplink essentials表達式。