我在得到eclipselink.join取提示GlassFish中工作的实际困难。

我有一个包含任务对象的集合和所述任务对象的客户对象具有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)

显然不是这样做的第三层的连接抓取。

任何人都有这个问题?还是只是我: - (

任何帮助或提示(没有双关),将不胜感激。

有帮助吗?

解决方案

OK,8小时的挫折后,我已经有了它的底部。

Glassfish的V2不使用的EclipseLink,因为它的持久性提供时,它使用的Toplink Essentitals。不幸的是Toplink的要领并没有提供一个加入取提示(我非常以下链接,让我觉得它确实困惑:的 https://glassfish.dev.java.net/issues/show_bug.cgi?id=1200 虽然这显然是一个特征请求不是功能)。

所以它会出现什么,我试图做是不可能的,在GlassFish中,如果我想要做的多层次急于取我将必须得到EntityManagers委托并直接使用排名靠前的链接要领表达式。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top