Glassfish EclipseLink juntar-busca dica não funciona
-
09-09-2019 - |
Pergunta
Eu estou tendo dificuldade real, recebendo o eclipselink.join-busca dica para o trabalho no GlassFish.
Eu tenho um objeto Cliente que contém uma coleção de objetos Task eo objeto Task tem uma coleção de WorkPeriod objetos.
Os meus olhares código como este:
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();
Mas não importa o que eu faço quando eu definir o nível TOPLINK depuração para multar ele sempre mostra que o SQL que é realmente executado é:
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)
É claro que não fazer o terceiro nível da join fetch.
Tem mais alguém teve problemas com isso ... ou é apenas mim: - (
Qualquer ajuda ou sugestões (sem trocadilhos), seria muito apreciado.
Solução
OK, depois de 8 horas de frustração que eu tenho para a parte inferior do mesmo.
não Glassfish V2 não usar EclipseLink como do provedor de persistência, ele usa Toplink Essentitals. Infelizmente TopLink Essentials não fornece uma junção-busca dica (eu estava muito confuso com link a seguir que me fez pensar que fiz: https://glassfish.dev.java.net/issues/show_bug.cgi?id=1200 embora este é, obviamente, um pedido de recurso não é uma característica).
Assim, parece que o que estou tentando fazer não é possível e se eu quiser fazer multi-nível ansioso buscar em glassfish eu vou ter que obter os EntityManagers delegar e usar as expressões TopLink Essentials diretamente.