2013-06-21 1 views
0

J'ai une table qui a un drapeau comme IORA. Valeurs possibles ou «I» ou «A».Façon de limiter un match de recherche et aucune limite sur les autres - HQL

J'ai une requête d'hibernation comme 'select c de MyClass où `.

Je dois limiter les enregistrements qui correspondent à IorA à 'I' dans la requête et aucune limite à 'A'. Union ne fonctionne pas dans HQL. Un autre moyen?

+0

Pourquoi Union ne fonctionne pas pour vous? – udalmik

+0

Je ne pense pas que Hibernate autorise Union. –

+0

Bien, ce n'est pas le cas. Je parlais de requête native. Si c'est une option. – udalmik

Répondre

0

utiliser une sous-requête:

select * from table 
where flag = 'a' 
union all 
select * from (
select * from table 
where flag = 'l' 
limit 3 
) t1 
+0

L'union n'est pas autorisée en hql. Ce n'est pas un SQL normal. –

+0

le seul moyen que je connaisse est le SQL natif – Alex

0

La seule option que je sais est native SQL requête avec le syndicat (pourrait être nommé). L'autre option (très souvent c'est ok) est d'utiliser deux requêtes séparées.

+0

Donc, avec le SQL natif, nous n'aurions pas toutes les optimisations et performances liées à Hibernate Entity. Droite? –

+0

De quelles améliorations de performance parlez-vous? SQL bien écrit ne devrait pas avoir de problèmes. Vous pouvez également mapper les résultats à l'entité. Plus d'infos [ici] (http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/querysql.html) – udalmik

Questions connexes