À l'aide de Java-les génériques type de modèle le repos de la Réponse de l'objet via GenericEntity<List<T>>

J'ai un générique de JAX-RS classe de ressource et j'ai défini un générique findAll méthode

public abstract class GenericDataResource<T extends GenericModel> {

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public Response findAll() {
        Query query = em.createNamedQuery(modelClass.getSimpleName()+".findAll");
        List<T> list = query.getResultList();
        return Response.ok(new GenericEntity<List<T>>(list) {}).build();
    }
}

et de classe d'Utilisateur:

public class User extends GenericModel {
    ...
}

Et ici est un exemple de définition de sous-classe:

@Path("users")
public class UserResource extends GenericDataResource<User> {

    public UserResource() {
        super(User.class);
    }
}

- Je obtenir ci-dessous Exception:

com.sun.jersey.api.MessageException: A message body writer for Java class 
java.util.Vector, and Java type java.util.List<T>, 
and MIME media type application/json was not found exception.

Si je remplace T avec une classe définie comme User comme suit:

GenericEntity<List<User>>(list)

puis il fonctionne très bien.

Aucune idée de la façon dont je peux le faire fonctionner avec des génériques de T?

Le point de l'ensemble de la super type de jeton est de capturer des informations génériques qui autrement seraient effacées. En essayant de rendre le jeton lui-même générique est une sorte de ... contre-productif.
J'ai besoin de "T s'étend GenericModel" comme il existe des fonctions dont j'ai besoin pour accéder dans la classe abstraite comme T. getId()

OriginalL'auteur Emin | 2013-03-14