Spring Data JPA Distinctes - le Retour des résultats à partir d'une seule colonne
J'ai des données que contient un STATE
champ (Chaîne/Texte) qui définit ce que l'état a donné la demande est actuellement (par exemple, en attendant, approuvé refusé etc.) et pour obtenir toutes les valeurs de cette colonne, je peux exécuter la requête TSQL suivante
SELECT DISTINCT STATE FROM CALLOUT_REQUEST
où CALLOUT_REQUEST
est mon nom de la table et STATE
être le domaine qui renvoie à quelque chose comme:
ÉTAT
- approuvé
- refusé
- en attendant
- ...
Cependant je ne comprends pas comment je pourrais le transformer en une requête dans mon référentiel, comme il semble que j'ai besoin d'un "par" déclaration ou quelque autre mécanisme du filtre qui je peux obtenir le STATE
basé sur?
Ce que je suis à la recherche de retour comme indiqué dans les premières TSQL requête ci - dessus est une sorte de Liste ou un Tableau d'objet qui contient tous les unique/valeurs distinctes dans tous les STATE
champs.
Donc en pseudo code, je pense que je suis à la recherche de quelque chose comme ceci:
String[] states = repository.findDisinctState();
où findDistinctState()
serait alors de retourner un tableau de toutes sortes.
L'espoir qui fait sens - je suis très nouveau à Java et au Printemps en général, donc je pense que je suis pas certains de la connaissance conceptuelle de les utiliser, de les ci-dessus.
Mise à JOUR:
L'état de concept est fermé donc j'ai pu mettre en œuvre que comme un enum - seul problème est que je ne sais pas comment le faire 🙂 Malade regarde comment je peux faire car je pense que ça colle parfaitement avec ce que je suis en train de réaliser.
La Liste que je reçois de la requête fourni est destiné à être utilisé pour obtenir un décompte de toutes les occurrences. J'ai eu ce code avant d'obtenir un nombre total pour chacun des "états":
Map stats = new HashMap();
String[] states = {"approved", "denied", "pending", "deactivated"};
for (int i = 0; i < states.length; i++) {
stats.put(states[i], repository.countByState(states[i]));
}
Ai-je raison de comprendre que les états Array
que j'ai dans l'extrait de code ci-dessus pourrait être transformé en un enum et alors je n'ai pas même besoin de la coutume @Query
plus?
Vous devez vous connecter pour publier un commentaire.
Si
state
concept est fermé et vous savez que c'est possible d'un ensemble de valeurs, il devrait être un enum.Après cela, vous pouvez créer des requêtes que vous invoquez comme:
Si vous ne pouvez pas créer un enum, vous avez besoin d'une méthode distincte pour obtenir les valeurs distinctes, qui ne peuvent pas être fournis par JPA, parce que vous avez besoin d'une liste de chaînes de caractères et non sur une liste de
CalloutRequest
s.Ensuite, vous devez spécifier manuellement une requête comme:
CalloutRequest
de type enum. Enfin, l'annoter avec: @Énumérés(EnumType.String) tomee.apache.org/examples-trunk/jpa-enumerated/README.htmlCouldn't find PersistentEntity for type class java.lang.String
. Apparemment, vous ne pouvez pas retourner une liste de chaînes de caractères à partir du référentiel.Vous pouvez utiliser une requête JPQL, avec l'
@org.springframework.data.jpa.repository.Query
annotation: