2017-09-14 1 views
-1

J'ai besoin d'obtenir des données de base de données en valeurs ENUM, mon ENUM comme suit:Java - comment interroger par Enum valeurs

public enum InspectType{ 

    often, 

    regular, 

    special, 

    } 

et mon entité comme celui-ci,

public class TechBridgeInspect{ 

    private InspectType insepctType; 

    get... 

    set... 

    } 

si je veux sélectionner le nombre total de ma base de données où inspectType = souvent, comment l'écrire?

J'essaie juste de suivre mais ça ne marche pas. sélectionnez le nombre (*) de TechBridgeInspect où inspectType = 'souvent';

mise à jour: j'essaie juste en suivant JPQL et cela a fonctionné,

String jpql1= "select count(inspect) from TechBridgeInspect inspect where inspect.insepctType IN (:inspectType)"; 
    entityManager.createQuery(jpql1,Long.class).setParameter("inspectType", EnumSet.of(TechBridgeInspect.InspectType.often)).getSingleResult(); 
+0

Comment êtes-vous CARTOGRAPHIE votre entité à DB? En fabriquant à la main + JDBC? Par ORM comme Hibernate? MyBatis? A quoi ressemble la structure de la table (si vous demandez SQL)? –

Répondre

0

Essayez ceci, si vous utilisez JPA,

SELECT COUNT(t) FROM TechBridgeInspect t 
FROM t 
WHERE t.inspectType = InspectType.often 
+0

Cela semble être un HQL/JPQL mais je ne peux pas trouver en question que OP a mentionné qu'il utilise un ORM –

+0

@AdrianShum En effet, il s'agit d'une requête JPA. Je soupçonnais que le questionneur utilisait ORM basé sur son exemple de requête où il/elle se réfère directement à l'entité, 'TechBridgeInspect'. –

+0

En fait, je devinais la même chose :) Cependant, je pense que OP a la responsabilité de poser la question plus claire (et de donner des balises appropriées). La requête qu'il citait n'est même pas un HQL/JPQL –