2016-07-22 14 views
0

Ich habe eine Utility-Methode wie folgt aussehen.Wie kann ich den ManagedType <X> eines Entity-Typs X beziehen?

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); 
} 

Nicht mit bestimmten Entitätsklasse MyEntity.class, wie kann ich verweisen MyEntity_.class für ManagedEntity<MyEntity>?

Sollte ich nur die Klasse mit _ postfixed finden?

Antwort

0

Ich denke, ich habe es herausgefunden, aber ich bin mir nicht sicher.

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

Ich kann meine Utility-Klasse wie folgt ändern.

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); 
}