2012-10-10 3 views
1

J'essaie de m'assurer que les fonctionnalités EJBQL d'Hibernate 3.2.1 sont supportées, mais mon google-fu m'a échoué. Tout ce que je trouvé était que les requêtes imbriquées ne sont pas pris en charge dans EJB 2.xHibernate 3.2.1 et requête EJBQL dans la requête

Puis-je mettre une requête dans une requête comme ceci:

select count(*) from 
    (select myField from myTable group by myField having sum(case.....) .......) 

Répondre

1

EBJQL ne supporte pas les sous-requêtes dans la clause from (vous peut les utiliser dans select et where), de sorte que cette requête exacte ne peut pas être effectuée. Vous pouvez essayer de réécrire la requête, dans votre cas ce qui suit devrait être équivalente:

select count(distinct e.myField) from myEntity e group by e.myField having ... 

Sinon, il suffit d'utiliser createNativeQuery() et utilisez votre requête initiale sans le réécrire dans HQL. Cela, bien sûr, brise la portabilité.

ASTUCE: si vous utilisez Eclipse, obtenez le plugin Hibernate de http://www.jboss.org/tools ou sur la place de marché. Il vous permet d'écrire et d'exécuter des requêtes directement depuis l'EDI (voir query prototyping dans la documentation des outils Hibernate). D'autres IDE pourraient également avoir des capacités similaires.

+0

Génial, ça devrait le faire. Le plugin hibernate devrait aussi être très pratique. Merci! – Robert