2010-12-08 39 views
1

J'utilise JPA (TopLink) et d'essayer de limiter le nombre de lignes renvoyées par une requête JPQL, donc je l'ai utilisé Query.setMaxResults méthode, mais il jette l'erreur suivante:query.setMaxResults() cause des problèmes sur TopLink

Exception [TOPLINK-6121] (Oracle TopLink Essentials - 2.0.1 (Build b09d-fcs (12/06/2007))): oracle.toplink.essentials.exceptions.QueryException 
Exception Description: The query has not been defined correctly, the expression builder is missing. For sub and parallel queries ensure the queries builder is always on the left. 

est ici la requête:

select distinct d.deptName from Departement d join d.employees e where e.empId in (select distinct a.employee.empId from ApprovedEmpls a join a.NewEmps o) 
+3

Etes-vous sûr que 'setMaxResults' cause le problème? Avez-vous essayé si cela fonctionne, sans elle? –

+0

Oui, ça marche sans. –

Répondre

1

Je suppose que la requête échouera même sans les maxResults?

Semble être un problème avec les sous-sélections, essayez de le supprimer ou de le changer (pourquoi joint-il NewEmps et ne l'utilise pas du tout?). Vous pouvez également utiliser une requête SQL native comme solution de contournement.

Vous devez envisager de mettre à niveau TopLink Essentials vers EclipseLink (TopLink 11g).

+0

Cela fonctionne bien, et je devrais envisager d'utiliser JOINs à la place. –