2013-10-06 2 views
4

J'ai des problèmes pour renvoyer une liste d'objets avec le nom racine de l'objet spécifié. J'ai essayé plusieurs choses différentes. Je suis sûr que je fais quelque chose d'incroyablement stupide comme toujours, et j'apprécie toute aide.aucun nom d'élément racine resteasy réponse

Voici mon objet

@XmlRootElement 
@JsonRootName(value = "Bixasset") 
@JsonIgnoreProperties({"hibernateLazyInitializer", "handler"}) 
@Produces("application/json") 
@Indexed  
public class Bixasset implements java.io.Serializable { 
    @Id 
    private UUID id; 

    private Client client; 

    private String name; 

    private String asseturl; 
    private Character active; 
    private Integer width; 
    private Integer height; 
    private String thumbnailurl; 
    private Date createddate; 
    private String filetype; 
    private String category; 


    public Bixasset() { 
    } 

    public Bixasset(UUID id) { 
     this.id = id; 
    } 

    public Bixasset(UUID id, Client client, String name, String asseturl,Character active, Integer width, Integer height, String thumbnailurl 
     ,Date createddate, String filetype, String category) { 
     this.id = id; 
     this.client = client; 
     this.name = name; 
     this.asseturl = asseturl; 
     this.active = active; 
     this.width = width; 
     this.height = height; 
     this.thumbnailurl = thumbnailurl; 
     this.createddate = createddate; 
     this.filetype = filetype; 
     this.category = category; 


    } 



    public UUID getId() { 
     return this.id; 
    } 

    public void setId(UUID id) { 
     this.id = id; 
    } 
    @ManyToOne(fetch=FetchType.LAZY, cascade = { CascadeType.PERSIST, CascadeType.REMOVE }) 
    @JoinColumn(name="clientid") 
    public Client getClient() { 
     return this.client; 
    } 

    public void setClient(Client client) { 
     this.client = client; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public String getAsseturl() { 
     return asseturl; 
    } 

    public void setAsseturl(String asseturl) { 
     this.asseturl = asseturl; 
    } 

    public Character getActive() { 
     return active; 
    } 

    public void setActive(Character active) { 
     this.active = active; 
    } 

    public Integer getWidth() { 
     return width; 
    } 

    public void setWidth(Integer width) { 
     this.width = width; 
    } 

    public Integer getHeight() { 
     return height; 
    } 

    public void setHeight(Integer height) { 
     this.height = height; 
    } 

    public String getThumbnailurl() { 
     return thumbnailurl; 
    } 

    public void setThumbnailurl(String thumbnailurl) { 
     this.thumbnailurl = thumbnailurl; 
    } 

    public Date getCreateddate() { 
     return createddate; 
    } 

    public void setCreateddate(Date createddate) { 
     this.createddate = createddate; 
    } 

    public String getFiletype() { 
     return filetype; 
    } 

    public void setFiletype(String filetype) { 
     this.filetype = filetype; 
    } 

    public String getCategory() { 
     return category; 
    } 

    public void setCategory(String category) { 
     this.category = category; 
    } 

    } 

Voici ma méthode

@Path("/bixasset/") 
@Produces(MediaType.APPLICATION_JSON) 
public Response queryBixAsset(@QueryParam("id") String id, @QueryParam("filetype") String filetype, @QueryParam("category") String category, @QueryParam("token") String token) { 
    try{ 

     List<Bixasset> results = new ArrayList<Bixasset>(); 


     UUID ClientId = dAL.validateToken(token); 

     if(token != null && ClientId != null){ 


       String query ="FROM Bixasset WHERE client.id = '" + ClientId + "' "; 


       if(id != null && !id.equals("")) 
        query += " AND id = '" + id + "'"; 

       if(filetype != null && !filetype.equals("")) 
        query += " AND filetype.id = '" + filetype + "'"; 

       if(category != null && !category.equals("")) 
        query += " AND category = '" + category + "'"; 




       query+= " LIMIT 1000"; 
       results = dAL.query(query); 
       System.out.println("query size" + results.size()); 


     }else{ 
      return Response.status(401).build(); 
     } 


     return Response.ok(results).build(); 
    }catch(Exception e){ 
     return Response.status(400).build(); 
    } 
} 

Voici mon résultat

[ 
    { 
    "id": "99f516a2-f7ef-4bc9-a627-73981a2fc3ae", 
    "client": { 
     "id": "388e16d6-d35e-4f8c-bba5-b1147b824473", 
     "reseller": null, 
     "name": "Phizzle", 
     "createddate": 1357554435574, 
     "address1": "123", 
     "address2": "", 
     "city": "San Francisco", 
     "state": "CA", 
     "postalcode": "80130", 
     "country": "USA", 
     "description": "Phizzle Master Client" 
    }, 
    "name": "gears_animated.gif", 
    "asseturl": "https://s3.amazonaws.com/asdad/99f516a2-f7ef-4bc9-a627-73981a2fc3ae.gif", 
    "active": "0", 
    "width": 141, 
    "height": 141, 
    "thumbnailurl": "https://s3.amazonaws.com/dadadsda/99f516a2-f7ef-4bc9-a627-73981a2fc3ae__thumbnail.jpg", 
    "createddate": 1380927929287, 
    "filetype": "image/gif", 
    "category": "Images" 
    } 
] 

préférerait mon résultat à ressembler à quelque chose comme

{"Bixasset" [ 
    { 
    "id": "99f516a2-f7ef-4bc9-a627-73981a2fc3ae", 
    "client": { 
     "id": "388e16d6-d35e-4f8c-bba5-b1147b824473", 
     "reseller": null, 
     "name": "Phizzle", 
     "createddate": 1357554435574, 
     "address1": "123", 
     "address2": "", 
     "city": "San Francisco", 
     "state": "CA", 
     "postalcode": "80130", 
     "country": "USA", 
     "description": "Phizzle Master Client" 
    }, 
    "name": "gears_animated.gif", 
    "asseturl": "https://s3.amazonaws.com/adsdadd/99f516a2-f7ef-4bc9-a627-73981a2fc3ae.gif", 
    "active": "0", 
    "width": 141, 
    "height": 141, 
    "thumbnailurl": "https://s3.amazonaws.com/adadsd/99f516a2-f7ef-4bc9-a627-73981a2fc3ae__thumbnail.jpg", 
    "createddate": 1380927929287, 
    "filetype": "image/gif", 
    "category": "Images" 
    } 
] } 

Répondre

0

Avez-vous essayé de définir la variable Annotation de @XmlRootElement au lieu d'utiliser @JsonRootName? Je veux dire:

@XmlRootElement(name = "Bixasset") 
+0

Pas de dés! Merci d'avoir essayé. – sgoldberg

Questions connexes