Salut!
J'ai du mal à traduire une requête SQL en critéria.
Voici le code de la requête:
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part SELECT COUNT(*) FROM Utilisateur u WHERE u.flagsup=1
Salut!
J'ai du mal à traduire une requête SQL en critéria.
Voici le code de la requête:
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part SELECT COUNT(*) FROM Utilisateur u WHERE u.flagsup=1
Bonjour ,
Si le problème est le count(*), tu peux utiliser :
Code : Sélectionner tout - Visualiser dans une fenêtre à part Projections.rowCount()
Le problème vient du WHERE, j'ai du mal à l'implémenter en critéria.
voici ma requête en critéria :
Je veux faire une séléction avec un WHERE, où l'insérer et comment ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 public Long nombreUser() { CriteriaQuery cq = em.getCriteriaBuilder().createQuery(); javax.persistence.criteria.Root rt = cq.from(Utilisateur.class); cq.select(em.getCriteriaBuilder().count(rt)); javax.persistence.Query q = em.createQuery(cq); return ((Long) q.getSingleResult()).longValue(); }
Rien de plus simple pour une égalité :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 List<Object> results = getSession().createCriteria(Utilisateur.class) .setProjection( Projections.rowCount() ) .add( Restrictions.eq( "flagsup", 1 )).list(); Long count = (Long)results.get(0);
Change le domaine de la discussion alors. Ici c'est le sous-domaine Hibernate...
Bonjour,
A+.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 CriteriaBuilder criteriaBuilder = em.getCriteriaBuilder(); CriteriaQuery<Long> criteriaQuery = criteriaBuilder.createQuery(Long.class); Root<Utilisateur> root = criteriaQuery.from(Utilisateur.class); criteriaQuery.select(criteriaBuilder.count(criteriaQuery.from(Utilisateur.class))) .where(criteriaBuilder.equal(root.get("idUtilisateur"), 1)); Long n = em.createQuery(criteriaQuery).getSingleResult(); System.out.println(n);
tu dois remplacer 'idUtilisateur' de mon code par 'flagsup'.
A+.
Voici la modification que vous m'avez démandé de faire autrefois ( remplacer idutilisateur de ton code par flagsup) :
La table où j' effectue ma requête n'est reliée à aucune autre table.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 public Long nombreUserFlag() { CriteriaBuilder criteriaBuilder = em.getCriteriaBuilder(); CriteriaQuery<Long> criteriaQuery = criteriaBuilder.createQuery(Long.class); Root<Utilisateur> root = criteriaQuery.from(Utilisateur.class); criteriaQuery.select(criteriaBuilder.count(criteriaQuery.from(Utilisateur.class))) .where(criteriaBuilder.equal(root.get("flagsup"), 0)); Long n = em.createQuery(criteriaQuery).getSingleResult(); System.out.println(n); return n; }
le problème est que j'ai du mal à traduire cette requête SQL ci-dessous en critéria :
La requête critéria ci-dessus me renvoie 4 utilisateurs dont le flagsup=0 quand j'en ai deux dans la base de données et 9 quand j'en ai 3,d'où j'ai parlé de produit cartésien .
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT COUNT(*) FROM Utilisateur u WHERE u.flagsup=0
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager