获取类映射信息Hibernate JpaTransactionManager

时间:2014-07-16 02:22:31

标签: hibernate jpa-2.0 sessionfactory


我试图以编程方式获取Hibernate映射类的数据。 我可以这样做:

sessionFactory.getClassMetadata(o.getClass());

但是我使用的是JpaTransactionManager,所以据我所知,我没有sessionFactory。有人知道解决方案吗? 改变HibernateTransactionManager并让sessionFactory做到这一点是一场噩梦吗?

感谢

2 个答案:

答案 0 :(得分:0)

如果您需要在DAO课程中以及已有会话参考的地方,您只需致电:

session.getSessionFactory().getClassMetadata(o.getClass());

如果你需要它并使用JPA 2.1,你可以使用:

SessionFactory sessionFactory = jpaTransactionManager.getEntityManagerFactory().unwrap(SessionFactory.class);
sessionFactory.getClassMetadata(o.getClass());

如果您不使用JPA 2.1,则可以:

EntityManagerFactory entityManagerFactory = jpaTransactionManager.getEntityManagerFactory();
EntityManager entityManager = entityManagerFactory.createEntityManager();
Session session = entityManager.unwrap(Session.class);
session.getSessionFactory().getClassMetadata(o.getClass());
...
entityManager.close(); 

答案 1 :(得分:0)

这是我的解决方案:

@Component
public class MetadataInfo {

    @PersistenceContext
    EntityManager entityManager;

    private ClassMetadata getClassMetadata() {
        Session session = entityManager.unwrap(Session.class);
        ClassMetadata classMetadata = session.getSessionFactory().getClassMetadata(User.class);

        return classMetadata;
    }
}