簡體   English   中英

如何從字符串名稱獲取休眠實體類

[英]How do I get a Hibernate Entity Class from a string name

這可能以前曾被問過,但是我已經看了一下,看不到任何簡潔的答案,因此我將再次詢問。

我有一個采用字符串的Web服務,以及一組字段名稱和數據。 我正在創建一個休眠標准,我需要一個實體實現。

因此,可以說我這樣做:

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

“ MyHibernateEntity”是指一個休眠注釋類,該類映射到數據庫中的某個表。

我想做的就是得到:MyHibernateEntity.class
來自:“ MyHibernateEntity”,它是一個字符串。

我看到的但尚未測試的一種解決方案是:

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

如果這是正確的方法,那就太好了;如果這不是正確的方法,那么您能推薦最好的方法嗎? 謝謝!

在Java中,您可以通過其名稱獲取類:

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

順便說一句,您不僅可以按類別創建Criteria ,還可以按實體名稱創建Criteria

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

是的,以下代碼有效。

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

但是,您將需要將其強制轉換為正確的類,以便能夠對其進行一些有用的操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM