2014-07-23 2 views
0

S'il vous plaît Aidez à résoudre ce problème ..
Je dois compter combien de règles sont associées à un id_groupe. En cela j'ai besoin de rules_id de count = 1
La règle est hibernate mappée Table.
Le groupe est mappé en mode hibernation Table.
ALERT_RULE_GROUP est un JoinTable qui est un-à-plusieurs.
Conversion de la requête Oracle en requête Hibernate

la requête qui me donne le bon résultat:

select rule_id from ALERT_RULE_GROUP where rule_id in(select rule_id from ALERT_RULE_GROUP where GROUP_ID=850) group by rule_id having count(*)=1; 

Je ne reçois ALERT_RULE_GROUP est pas mappée ..
S'il vous plaît aidez-moi à convertir en HQL ..

+0

Je pense que Hibernate ne fait pas de sous-requêtes, vous pourriez avoir besoin d'une jointure. – Mihai

Répondre

0

Vous allez besoin de mapper la relation que représente ALERT_RULE_GROUP dans Hibernate avant de pouvoir continuer. C'est ce que Hibernate essaie de vous dire. Pour ce faire, ajoutez un ManyToMany ou un OneToMany ou quoi que ce soit entre Rôle et Groupe et spécifiez le nom de la table jointe avec une annotation @JoinTable (name = ALERT_RULE_GROUP).

+0

@OneToMany (fetch = FetchType.EAGER) \t @JoinTable (name = "ALERT_RULE_GROUP", joinColumns = {@ JoinColumn (name = "RULE_ID")}, inversejoinColumns = {@ JoinColumn (name = "GROUP_ID")}) \t private Set groups = nouveau HashSet (); – Yogeendra

+0

il est mentionné dans Rule.java – Yogeendra

+0

Aha. Vous l'avez déjà fait cartographier. Désolé pour ça. Havent a essayé d'interroger directement dans une table de jointure. Qu'en est-il du mappage de la table dans une entité distincte: "AlertRuleGroup". Vous pouvez mapper les identifiants en tant qu'ints et exécuter la requête. Si vous n'aimez pas cela et que vous ne demandez pas de tables de jointure, pourquoi ne pas s'en tenir au SQL? –