je suis coincé avec un problème très simple critères de recherche:résolution de problèmes requête Hibernate critères simples
sess .createCriteria(user.class, "user")
.user_c.add(Restrictions.eq("user.status", 1))
.user_c.createAlias("user.userCategories","ucs")
.add(Restrictions.eq("ucs.category_id",1));
.add(Restrictions.eq("ucs.category_id",'yes'));
.add(Restrictions.eq("ucs.category_id",2));
.add(Restrictions.eq("ucs.category_id",'no')).list();
Bien sûr, cela se traduit pas utilisateur.
dans SQL J'ai aussi essayé il:
Select * FROM users user , ec_user_category uc where
uc.user_login = user.login AND
uc.status = 1 AND
((uc.category_id = 1 AND uc.value = 'yes') AND (uc.category_id = 2 AND uc.value = 'no'))
également aucun utilisateur bien sûr
deux solutions dans SQL, je pense pas très efficace:
Select a.login from
(Select user.login , COUNT(*) as counter FROM users user , ec_user_category uc
where user.status = 1
and uc.user_login = user.login
and
((uc.category_id = 1 and uc.value = 'yes')
OR (uc.category_id = 2 and uc.value = 'no'))
GROUP BY user.login) a where a.counter = 2
autre:
Select * FROM users u
JOIN user_category uc on uc.user_login = u.login
JOIN user_category uc2 on uc2.user_login = u.login
WHERE (uc.category_id = 1 and uc.value = 'yes')
AND (uc2.category_id = 2 and uc2.value = 'no')
ces r Les estimations me donnent la bonne information, mais je ne pense pas que ce soit la bonne façon. Et comment je vais implémenter cela dans Hibernate avec l'API Criteria.
Ou ai-je besoin d'une nouvelle table dans ma base de données?