如何从字符串名称获取Hibernate实体类

时间:2015-04-15 16:07:29

标签: java hibernate

之前可能已经提出过这个问题,但是我已经看过了,我看不到任何简洁的答案,所以我会再问一次。

我有一个带有字符串的Web服务,以及一组字段名称和数据。我正在创建一个Hibernate Criteria,我需要一个实体实现。

所以,我想说:

Criteria criteria = session.createCriteria(MyHibernateEntity.class);

" MyHibernateEntity"是指一个hibernate-annoted类,它映射到我的数据库中的某个表。

我想做的是:MyHibernateEntity.class
来自:" MyHibernateEntity"这是一个字符串。

我看到的一个解决方案,我还没有测试过:

Object someHibernateEntityClass = session.get("MyHibernateEntity", null);

如果这是正确的方法,那很好,如果不是这样,那么你能推荐最好的方法吗?谢谢!

2 个答案:

答案 0 :(得分:0)

在Java中,您可以通过名称获取类:

try {
   Class<?> entityClass = Class.forName("my.entities.MyHibernateEntity");
   Criteria criteria = session.createCriteria(entityClass);
} catch (ClassNotFoundException e) {
   ///
}

顺便说一句,您可以不是按类but by entity name as well创建Criteria

Criteria criteria = session.createCriteria("MyHibernateEntity");

答案 1 :(得分:0)

是的,以下代码有效。

  Object someHibernateEntityClass = session.get("MyHibernateEntity", id_value);

但是你需要把它投到正确的课堂上才能用它做一些有用的事情。