Bonjour,

Tout est plus ou moins dans le titre, voici quand même plus d'explications :

Je suis entrain de développer des services web (serveur d'application Glassfish).
Jusque là tout allait bien, je développais mes requêtes en JPA, le résultat correspondait à mes emtities crées pas de problème pour obtenir mes XML.

La, j’ai une requête plus spécifique contenant des sommes :
Ex : Select sum(primeBrute) as prime, sum(echeance) as janvier ….

Je souhaite faire remonter un «tableau » de valeur. Mon problème c'est que je n’ai aucune correspondance avec une entity, comment faire ???

Première question : est ce que cela est possible ??


En effet j’ai testé différentes solutions mais aucune n’a marché pour l’instant.

Ex :
Code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
@Produces({"application/xml", "application/json"})
    public List<Object[]> echenacierByMois(@PathParam("guid") String guid) {
        List <Object[]> lst = new ArrayList<Object[]>();
        String req = "Select sum(primeBrute) as prime, sum(echeance) as janvier ….";
        Query q = (Query) em.createQuery(req);
        lst = q.getResultList();
        return lst;
    }
Ps : ma requête fonctionne je l’ai testé, je bloque concrètement sur le passage des résultats de celle-ci en XML

Erreur retournée :
javax.ws.rs.WebApplicationException: com.sun.jersey.api.MessageException: A message body writer for Java class java.util.Vector, and Java type java.util.List<java.lang.Object[]>, and MIME media type application/xml was not found
Ensuite j'ai essayé de créer une classe pour entre guillemet représenter l'entity manquante.
Ma méthode est la même sauf que j'ai remplacé Object[] par le nom de ma classe.

Ma classe correspondante ressemble à cela :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
@XmlRootElement (name = "Echeancier")
public class Echeancier implements Serializable{
    private double echeance;
    //autres double + getters and setters
Message d'erreur :
javax.ws.rs.WebApplicationException: javax.xml.bind.MarshalException
- with linked exception:
[com.sun.istack.SAXException2: unable to marshal type "java.math.BigDecimal" as an element because it is missing an @XmlRootElement annotation]
Je n'arrive pas à décrypter cette erreur...


Avez-vous des pistes ou des idées à me transmettre si ce que je souhaite faire est possible. Je suis à cours d'idée et je bloque totalement...

Merci beaucoup