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
Vous devez vous connecter pour publier un commentaire.
Comme documenté, CriteriaBuilder.comte revient
Expression<java.lang.Long>
. Par conséquent argument de type àCriteriaQuery
etTypedQuery
doit être Long. En va de même pour le type decount
variable.Quand il n'y a qu'une seule valeur pour être sélectionné, il est logique d'utiliser CriteriaQuery.sélectionnez au lieu de multiselect, parce qu'alors, une telle erreur est piégé déjà au moment de la compilation.
OriginalL'auteur Mikko Maunu
em - EntityManager
DZI_id - nom de la colonne
1 - la recherche de la valeur
Dzialy - classe d'entité
OriginalL'auteur milosz
OriginalL'auteur CHowdappaM