Maison > Java > javaDidacticiel > Comment convertir les résultats de requêtes natives en collections de classes POJO dans JPA ?

Comment convertir les résultats de requêtes natives en collections de classes POJO dans JPA ?

Patricia Arquette
Libérer: 2024-12-14 02:16:10
original
396 Les gens l'ont consulté

How to Convert Native Query Results to POJO Class Collections in JPA?

Comment convertir le résultat d'une requête native en collection de classes POJO dans JPA

Lorsque vous travaillez avec JPA, il est parfois nécessaire d'exécuter des requêtes natives pour accéder à des données qui ne peuvent pas être récupérées efficacement à l’aide de requêtes selon les critères JPA. Si le résultat d'une requête native est une collection de valeurs, il peut s'avérer nécessaire de convertir chaque objet de résultat en classe POJO (Plain Old Java Object) pour un traitement ultérieur.

Diffusion directe à l'aide de mappés. Entités

Dans JPA 2.0 et versions antérieures, il n'était pas possible de transtyper directement un résultat de requête natif vers une classe POJO. Cependant, JPA 2.1 a introduit l'annotation @SqlResultSetMapping, qui permet le mappage des résultats de requêtes natifs aux POJO.

Pour utiliser cette fonctionnalité, une annotation @SqlResultSetMapping doit être définie dans une classe d'entité, spécifiant la classe à laquelle le Le résultat doit être mappé et les colonnes qui correspondent aux propriétés de la classe. Par exemple :

@SqlResultSetMapping(
        name = "JediResult",
        classes = {
                @ConstructorResult(targetClass = Jedi.class,
                        columns = {@ColumnResult(name = "name"), @ColumnResult(name = "age")})
        }
)
Copier après la connexion

Avec cette annotation en place, vous pouvez exécuter une requête native et utiliser l'annotation @SqlResultSetMapping pour spécifier le mappage à la classe POJO :

Query query = em.createNativeQuery("SELECT name, age FROM jedi_table", "JediResult");
@SuppressWarnings("unchecked")
List<Jedi> jedis = query.getResultList();
Copier après la connexion

Diffusion indirecte à l'aide du mappage manuel

Si JPA 2.1 n'est pas disponible, il est possible de effectuer un mappage manuel des résultats de requêtes natives vers des POJO à l'aide de la réflexion. Cela implique la création d'une méthode qui prend un tableau de tuples (renvoyé par les requêtes natives) et une classe POJO en entrée et utilise la réflexion pour créer une instance de la classe POJO avec les valeurs du tuple. Cette méthode peut ensuite être utilisée pour mapper chaque résultat à un objet POJO.

Utilisation de requêtes natives nommées

Une autre option pour convertir les résultats de requêtes natives en POJO consiste à utiliser des requêtes nommées requêtes natives. Les requêtes natives nommées vous permettent de définir une requête native dans une classe d'entité et de spécifier la classe de résultat de la requête. Cette classe de résultats peut être un POJO ou une classe d'entité. En utilisant une requête native nommée, vous pouvez éviter d'utiliser la réflexion et mapper directement le résultat à la classe POJO.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal