2015-04-15 63 views
0

这可能是以前曾被问过的,但我已经看过了,而且我看不到任何简洁的答案,所以我会再次提问。如何从字符串名称中获得Hibernate实体类

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

因此,可以说,我做的事:

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

“MyHibernateEntity”是指映射到一些表在我的数据库休眠-annoted类。

我想要做的是得到:MyHibernateEntity.class
from:“MyHibernateEntity”这是一个字符串。

一个解决方案,我看到了,我还没有测试,只是还没有被做:

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

如果这是正确的道路,这是伟大的,如果这是没有办法的办法,那么你可以推荐最好的方式来做到这一点。谢谢!

回答

0

在Java中,你可以通过它的名字得到类:

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

BTW,您可以创建Criteria不是类,but by entity name as well

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

是,下面的代码工作。

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

但是,您需要将它转换为正确的类以便能够对它进行一些有用的操作。

+0

通过这个,你可以通过它的“实体名称”获得实体,它不需要与类名相同。 –

+0

是的,它们不一定是相同的,但是它们是通过映射来定义的,我相信名称来的形式没有任意的值,但可以填充来为这个名称起诉正确的实体名称。 – Zielu

相关问题