2016-07-22 1 views
0

J'ai créé une méthode utilitaire qui ressemble à ceci.Comment puis-je référencer le ManagedType <X> d'une entité de type X?

public static <T extends BaseEntity> Optional<T> findByUri(
     final EntityManager entityManager, 
     final Class<T> entityClass, 
     final ManagedType<? super T> entityType, 
     final Supplier<String> uriSupplier) { 
    return findByUniqueAttribute(
      entityManager, 
      entityClass, 
      () -> entityType.getSingularAttribute(
        PersistenceConstants.URI_ATTRIBUTE_NAME, String.class), 
      uriSupplier); 
} 

pas avec classe entité donnée MyEntity.class, comment puis-je consulter MyEntity_.class pour ManagedEntity<MyEntity>?

Devrais-je simplement trouver la classe postfixée avec _?

Répondre

0

Je pense que je l'ai compris, mais je ne suis pas sûr.

final EntityType<MyEntity> entityType = 
    entityManager.getMetamodel().entity(MyEntity.class) 

Je peux changer ma classe d'utilité comme ceci.

public static <T extends BaseEntity> Optional<T> findByUri(
     final EntityManager entityManager, 
     final Class<T> entityClass, 
     final Supplier<String> uriSupplier) { 
    return findByUniqueAttribute(
      entityManager, 
      entityClass, 
      () -> entityManager.getMetamodel().entity(entityClass) 
      .getSingularAttribute(
        PersistenceConstants.URI_ATTRIBUTE_NAME, String.class), 
      uriSupplier); 
}