0

Je demande dépôt similaire au printemps de données JPA où je ne créer une interface d'un référentiel d'entité:Obtenir classe Entité JPA et interface Repository

public interface AuthorRepository extends Repository<Author, Long> { 
} 

Je cette interface aussi Repository:

public interface Repository <T, ID extends Serializable> { 
    List<T> findAll() throws Exception; 
} 

et sa mise en œuvre, que je trouve qu'il est difficile d'obtenir le nom de la classe adoptée en tant que paramétrés (T) au référentiel:

public class RepositoryImpl implements Repository { 
    @Inject 
    private EntityManager em; 

    @Override 
    public List<Object> findAll() throws Exception { 
     try { 
      String namedQuery = "SELECT a FROM " + <How do I get the entity here as Author?> + " a"; 
      TypedQuery<Object> query = em.createNamedQuery(namedQuery, <How do I get the entity class as Author.class?>); 

      return query.getResultList(); 
     } catch (Exception e) { 
      System.out.println(e.getMessage()); 
      throw new ApplicationException(); 
     } 
    } 

}

Je ne peux pas trouver comment générer manière dynamique la classe d'entité (ex. Auteur) à créer dans le cadre de NamedQuery chaîne et un argument pour em.createNamequery().

Merci pour toute aide.

+0

Peut-être utilisé? https://stackoverflow.com/questions/3437897/how-to-get-a-class-instance-of-generics-type-t –

+0

Merci pour le lien. J'ai vu beaucoup de réponses similaires. J'ai même suivi la conception et les codes [ici] (https://developer.jboss.org/wiki/GenericDataAccessObjects), mais aucun d'eux n'avait fonctionné. J'ai toujours obtenu ClassCastException. Merci à [TypeTools] (https://github.com/jhalterman/typetools). Il fonctionne comme un charme. –

Répondre

0

La recherche sur le Web m'a donné une approche et des codes similaires, mais aucun n'a fonctionné, mais TypeTools fonctionne comme un charme.