Résultat de requête native EclipseLink dans POJO - Descripteur manquant pour [Classe]
Je suis en utilisant EclipseLink d'exécuter du SQL Natif. J'ai besoin de renvoyer les données dans un POJO. J'ai suivi les instructions à EclipseLink Docsmais je reçois l'erreur Missing descriptor for [Class]
La requête colonnes ont été nommés pour faire correspondre les variables membres de l'POJO. Ai-je besoin de faire un peu plus de la cartographie?
POJO:
public class AnnouncementRecipientsFlattenedDTO {
private BigDecimal announcementId;
private String recipientAddress;
private String type;
public AnnouncementRecipientsFlattenedDTO() {
super();
}
public AnnouncementRecipientsFlattenedDTO(BigDecimal announcementId, String recipientAddress, String type) {
super();
this.announcementId = announcementId;
this.recipientAddress = recipientAddress;
this.type = type;
}
... Getters/Setters
Entité Gestionnaire de l'appel:
public List<AnnouncementRecipientsFlattenedDTO> getNormalizedRecipientsForAnnouncement(int announcementId) {
Query query = em.createNamedQuery(AnnouncementDeliveryLog.FIND_NORMALIZED_RECIPIENTS_FOR_ANNOUNCEMENT, AnnouncementRecipientsFlattenedDTO.class);
query.setParameter(1, announcementId);
return query.getResultList();
}
source d'informationauteur retrodev
Vous devez vous connecter pour publier un commentaire.
J'ai découvert que vous pouvez mettre les résultats d'une Requête Native de l'exécution dans une Liste de Tableaux qui contiennent des Objets. Ensuite, on peut itérer sur la liste et les éléments du Tableau et de construire l'Entité souhaitée objets.
Une vieille question, mais peut-être à la suite de la solution pour aider quelqu'un d'autre.
Supposons que vous voulez retourner une liste de colonnes, et le type de données longueur de données pour une table donnée dans Oracle. J'ai écrit ci-dessous un échantillon d'autochtones requête pour cela:
Maintenant l'exigence est de construire une liste de POJO à partir du résultat de la requête ci-dessus.
Définir
TableColumn
classe d'entité comme ci-dessous:Maintenant nous sommes prêts à construire une liste de POJO. Utiliser l'exemple de code ci-dessous pour construire obtenez votre résultat sous forme de Liste de Pojo.
Aussi, n'oubliez pas d'ajouter dans votre classe POJO en
persistence.xml
! Il peut être facile d'oublier si vous avez utilisé pour votre IDE qui gère ce dossier pour vous.Vous ne pouvez utiliser que natif des requêtes SQL avec une classe, si la classe est mappée. Vous devez définir les AnnouncementRecipientsFlattenedDto classe comme un @Entité.
Sinon, il suffit de créer la requête native avec seulement le SQL et d'obtenir un tableau de données et de construire votre DTO vous-même en utilisant les données.
Eu le même genre de problème lorsque j'ai voulu retourner une Liste de Pojo, et vraiment juste Pojo (appelons-la DTO si vous voulez) et pas @Entity annoté des Objets.
Avec la Requête suivante:
Crée la PojoExample à partir de la base de données sans la nécessité d'une Entité d'annotation sur PojoExample. Vous pouvez trouver l'appel de méthode dans la Oracle Docs ici.
edit:
Il s'avère que vous avez à utiliser @SqlResultSetMapping pour que cela fonctionne, sinon votre requête.getResultList() retourne une Liste d'Objets.
Il suffit de mettre ceci n'importe où sous votre @Entity (donc dans cet exemple soit dans le tablea ou tableb parce que PojoExample n'a pas de @Entity)