2015-04-15 61 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

相關問題