如何使用反射从hibernate对象中获取数据?

时间:2015-04-14 16:18:15

标签: java hibernate reflection

以下是我使用反射的问题示例。这是一个简单的案例,但我最终需要的是动态地动态构建方法名称......但即使是这个简单的案例我也无法开始工作!

Client1 cData = (Client1) session.get(Client1.class, 1);
int cType = cData.getClientType();
int cType2 = -1;

Method method[] = null;
Method getCTypeMethod = null;

try {
  method = cData.getClass().getMethods();
  for (Method m : method){
    System.out.println(m.getName()); // displays getClientType
  }

  getCTypeMethod = cData.getClass().getMethod("getClientType", int.class);
  if (getCTypeMethod != null){
      cType2 = (int) getCTypeMethod.invoke(cData,  int.class);
  }
} catch (Exception e) {
  e.printStackTrace();
}        
assertEquals(cType,  cType2);

该行:

getCTypeMethod = cData.getClass().getMethod("getClientType", int.class);

始终抛出异常: java.lang.NoSuchMethodException:Client1.getClientType(int)

1 个答案:

答案 0 :(得分:3)

方法getMethod接收param类,而不是返回类型,你的getClientType收到一个int?

如果没有,请尝试:

cData.getClass().getMethod("getClientType");