如何从JPA实体名称获取Class?

时间:2015-10-02 15:44:15

标签: class jpa entity

有没有办法找出

  java.lang.Class 

那是

@Entity(name = "X")?

换句话说,使用实体名称来获取实体的类名,当然在运行时:)

2 个答案:

答案 0 :(得分:4)

MetaModel#getEntities()提供所有已注册的@Entity。它返回List<EntityType<?>>,其中EntityType有一个代表@Entity(name)的{​​{3}}方法和一个代表相关@Entity类的getName()MetaModel实例由getJavaType()提供。

换句话说,这是实用方法风格的方法:

public static Class<?> getEntityClass(EntityManager entityManager, String entityName) {
    for (EntityType<?> entity : entityManager.getMetamodel().getEntities()) {
        if (entityName.equals(entity.getName())) {
            return entity.getJavaType();
        }
    }

    return null;
}

答案 1 :(得分:0)

我在JPA规范中提出了一个问题,即能够在4年前按实体名称加载实体,并且仍未对此事进行开发: https://github.com/javaee/jpa-spec/issues/85