le comte * avec la clause where en utilisant JPA critères de requête

Je veux trouver des enregistrements pour related_elements table, où id appartient à une liste

supposons qu'un Ensemble de tempSet contient[2,3,4]
Je dois vérifier pour ces valeur contient en related_element table à l'aide de jpa critères de requête

CriteriaBuilder cb1=entityManager.getCriteriaBuilder();
        CriteriaQuery<RelatedElements> cq1=cb1.createQuery(RelatedElements.class);
        Root<RelatedElements> RelatedElementsRoot=cq1.from(RelatedElements.class);
    for (Integer tSet : tempSet) {
            ParameterExpression<Integer> pRelatedElement=cb1.parameter(Integer.class);
            cq1.multiselect(cb1.count(RelatedElementsRoot.<RelatedElements>get("relatedElementsPk").<Integer>get("relationId"))).where(cb1.equal(RelatedElementsRoot.get("relationId"), pRelatedElement));
            TypedQuery<RelatedElements> qry = entityManager.createQuery(cq1);
            qry.setParameter(pRelatedElement, tSet);
            count = entityManager.createQuery(cq1).getSingleResult().getRelationId();
        }

mais son travail...tout suggessions

deuxième essai

CriteriaBuilder cb1=entityManager.getCriteriaBuilder();
        CriteriaQuery<Integer> cq1 = cb1.createQuery(Integer.class);
        Root<RelatedElements> RelatedElementsRoot=cq1.from(RelatedElements.class);
        for (Integer tSet : tempSet) {
            ParameterExpression<Integer> pRelatedElement=cb1.parameter(Integer.class);
            cq1.multiselect(cb1.count(cq1.from(RelatedElements.class)));
            cq1.where((cb1.equal(RelatedElementsRoot.get("relatedElementsPk").get("relationId"), pRelatedElement)));
            TypedQuery<Integer> qry = entityManager.createQuery(cq1);
            qry.setParameter(pRelatedElement, tSet);
            count =qry.getSingleResult();
        }

sa présentation exception à la req.setParameter

Impossible de localiser le constructeur approprié de la classe [java.lang.Integer] [sélectionnez new java.lang.Entier(count(*)) à partir de com.mcd.webex.de modèle.RelatedElements comme generatedAlias0, com.mcd.webex.de modèle.RelatedElements comme generatedAlias1 où generatedAlias0.relatedElementsPk.id=:param0]

Pourriez-vous montrer votre cq1 chaîne de données?

OriginalL'auteur Surya | 2013-10-04