Glassfish的EclipseLink的加盟取暗示不工作
-
09-09-2019 - |
题
我在得到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委托并直接使用排名靠前的链接要领表达式。
不隶属于 StackOverflow