Printemps de Données: JPA référentiel findAll() pour retourner *la Carte au lieu de la Liste?
J'ai un Spring Data JPA référentiel d'interface qui ressemble à quelque chose comme ceci:
@Repository
public interface DBReportRepository extends JpaRepository<TransactionModel, Long> {
List<TransactionModel> findAll();
List<TransactionModel> findByClientId(Long id);
}
Est-il une solution pour faire la même chose mais pour une Collection à être retourné de type HashMap<K, V>
? J'ai regardé à travers le Printemps classes de Données et ne pouvait pas trouver autre chose que la Liste des<> les valeurs de retour.
- Il n'est pas tout, ce qui vous empêche de le faire vous-même?
- tu veux dire créer une telle fonction pour le printemps des données moi-même?
- Créer une fonction pour vous-même, je veux dire, où que vous soyez à l'appel de ce référentiel, après le chargement de la liste, vous pouvez l'associer à
Map
avec Java 8 one-liner. - c'est une possibilité. Je ne suis pas sûr si c'est bon en termes de performance. Itération prend du temps, surtout quand mon
<List>
contient 10 000 - 100 000Transaction
objets. J'ai pour correspondre à l'identité de deux<List>
avecTransaction
objets et je me demandais si je peux raser un peu de temps en utilisant*Map
constructions lors de la correspondance. Mais si je ne peux obtenir un<List>
puis de le convertir en*Map
et puis faire de la correspondance, je ne suis pas tout à fait sûr que cela va m'apporter toutes les améliorations de la vitesse. - Comment votre sql ressembler à? Quelle sera la clé et ce qui est de la valeur?
- la clé serait la
id
et valeur =Transaction
objet - et
id
est la mêmeid
de ses Transactions en valeur? - oui, c'est vrai
- pouvez-vous fournir plus d'informations dans votre question, ce que vous voulez vraiment faire et comment le plan devrait ressembler. Je pense que vous pourrez également utiliser une map<Long, de la Liste<Opération>>?
- la carte ressemble à ceci:
Map<Long, Transaction> transactionMap = new HashMap<Long, Transaction>();
- Carte n'est pas pris en charge type de retour pour le Printemps référentiel de Données, les méthodes donc @Patrick réponse ci-dessous est la bonne solution.
- itération entraînera dans le temps linéaire de la complexité, ce qui vous permettra d'obtenir de toute façon, si vous avez besoin de visiter chaque élément, donc ce n'est pas un problème: en.wikipedia.org/wiki/Time_complexity
Vous devez vous connecter pour publier un commentaire.
Je ne pense pas que vous trouverez une solution plus facile que de créer un simple liner pour convertir votre résultat à une carte. Il est simple et rapide avec java 8 lambdas:
Juste eu à résoudre quelque chose de semblable et Patrick pour répondre aidé, mais il peut être amélioré en indiquant le lieu où l'ajouter.
Pour le faire apparaître comme la JPA repo retourne une carte, une amélioration serait de conclure à un défaut de méthode dans le référentiel de l'interface. Vous évite d'avoir à effectuer un ruisseau à tous les consommateurs des classes.