我需要仅使用我的 EntityManager 实例检索某个实体的数据库表名称,这可能吗?
或任何加载具有相关实体类的所有映射表的方法。
PS:我使用的是没有注释的 Hibernate v4.2.7
最佳答案
一旦将其从 EntityManager 中剥离出来,您就可以从 hibernate SessionFactory 中获取它:
@PersistenceContext
EntityManager entityManager;
public String getTableName(Class entityClass){
SessionFactory sessionFactory = ((Session) entityManager.getDelegate()).getSessionFactory();
ClassMetadata classMetadata = sessionFactory.getClassMetadata(entityClass);
SessionFactoryImpl sessionFactoryImpl = (SessionFactoryImpl) sessionFactory;
AbstractEntityPersister entityPersister
= (AbstractEntityPersister) sessionFactoryImpl.getEntityPersister(classMetadata.getEntityName());
return entityPersister.getTableName();
}
无法找到合适的 API 来使用普通 EntityManager。 如果您被允许参与实现,那么这对我有用。
关于java - 如何在没有表注释的情况下检索实体的映射数据源表名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41601111/