Java生成setter查询名称

时间:2017-10-29 23:23:37

标签: java hibernate jpql

我正在构建一个实体,我需要从jpql结果集中填充结果集中的所有字段,如下所示:

    summary.setPeriod_1((BigDecimal)object[4]);
    summary.setPeriod_2((BigDecimal)object[5]);
    summary.setPeriod_3((BigDecimal)object[6]);
    summary.setPeriod_4((BigDecimal)object[7]);

问题在于有50倍的时期,它看起来很丑陋,占用了大量的空间。

是否可以将其作为这样的for循环:

for(int i=1; i<54; i++){
summary.setPeriod_[i]((BigDecimal)object[i+4]);
}

1 个答案:

答案 0 :(得分:1)

你应该尝试一下这样的事情。

java.lang.reflect.Method method;
try {
  for(int i=1; i<54; i++){
       method = summary.getClass().getMethod("setPeriod_"+i, BigDecimal.class);
       method.invoke(summary, object[i]);
  }
} catch (SecurityException e) { ... }
  catch (NoSuchMethodException e) { ... }
  catch (IllegalArgumentException e) { ... }
  catch (IllegalAccessException e) { ... }
  catch (InvocationTargetException e) { ... }