2013-07-05 47 views
2

假設我將Criteria對象作爲條件。現在我怎麼能得到與這個標準對象相關聯的實體或類的名稱。如何使用Hibernate Criteria對象獲取實體或類名稱

據我所知,crtieria對象會一直在代碼中創建一些像這樣的事情在一些地方:

Criteria criteria = getSession().createCriteria(persistentClass); 

現在,如果我收到這樣的標準對象,並想知道「對PersistentClass」實體是什麼獲取它的簡單方法?

感謝

+1

我還沒有在javadoc中找到任何方法。將Criteria及其根類包裝在自定義對象中,並傳遞此對象而不僅僅是Criteria。 –

回答

0

不是一個確切的解決方案,但仍,

用別名創建標準,

createCriteria(String associationPath, String alias) 

保持別名和associatedPath的映射的地方,可以在屬性文件或地圖可以從哪個類想要知道哪些「persistentClass」可以訪問它。

然後使用getAlias()方法來獲取別名,並在您的地圖/屬性文件中查找以獲取persistentClass。

1
CriteriaImpl impl = (CriteriaImpl) criteria; 
    String className = impl.getEntityOrClassName(); 

    if (className.equals(GenomicSequence.class.getName())) 
     criteria.add(Restrictions.eq(BrcConstants.FAMILY_PARTITION, familyName)); 
    else 
     criteria.add(Restrictions.eq("genomicSequence.family", familyName));