2012-04-07 43 views
0

有什麼方法可以獲得Java Bean字段的Object數組?我有一些代表數據庫表(Hibernate)的bean類,我需要從它們中檢索jtable模型的對象數組,但似乎唯一的方法是通過爲每個類的每個字段調用getXXX方法 - 很多要做的工作。來自Java Bean字段的對象數組

+0

您是否嘗試過寫你自己的方法這一點。我認爲你可以編寫泛型方法,並從一個方法調用中獲取所有實體。 – mbaydar 2012-04-07 20:03:43

回答

4

如果你想要一個通用的方式來從bean中提取值,你應該看看introspection(package「java.lang.reflect」)。

這是一個基本的例子:

Field[] fields = ABeanClass.getDeclaredFields(); 

Object[] values = new Object[fields.length]; 

int i = 0; 

for (Field field : fields) { 
    values[i] = field.get(beanInstance); 
    i++; 
} 
+0

沒有時間去嘗試,但似乎是一個很好的解決方案。當我嘗試這個時,我會回答。 – user1091733 2012-04-09 12:48:18

0

我做到這一點是使用「控制器」類處理所有模型和數據庫之間的通信方式。

您製作「對象」列表,例如private List myList = null; 現在,在控制器類中編寫一個通用方法。說getList返回列表。將相對類傳遞給方法,並使用hibernate會話返回列表。在你的豆,這樣做

myList = myController.getList(YourBean.class); 

而這應該是你的getlist方法。

public List getList(Class c) throws BaseExceptionHandler { 
     Session session = null; 
     Transaction tx = null; 
     String query = null; 
     List list = null; 
     try { 
      query = getStringQuery(c); 
      if (query != null) { 
       session = sessFactory.openSession(); 
       tx = session.beginTransaction(); 
       list = (List) session.createQuery(query).list(); 
       tx.commit(); 
      } 
     } finally { 
      if (session != null) { 
       session.close(); 
      } 

     } 
     return list; 
    } 

CHEERS :)

+0

我想你可能會誤解我的問題。我想獲得Bean的字段的對象數組,而不是由hibernate返回的對象的對象數組。 – user1091733 2012-04-09 12:47:17