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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top