Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java生成setter查询名称_Java_Hibernate_Jpql - Fatal编程技术网

Java生成setter查询名称

Java生成setter查询名称,java,hibernate,jpql,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个周期,看起来很难看,占用

我正在构建一个实体,需要从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]);
}

for(inti=1;i你应该试试这样的东西

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) { ... }
java.lang.reflect.Method;
试一试{

对于(int i=1;这更像是一个注释而不是一个答案。@Djory我一直收到一个非法的参数错误。在您的示例中,“obj”应该是什么?我的错,这是您需要的类的实例。在这种情况下,它是摘要。使用
addPeriod(int位置,BigDecimal句点)会更好吗
method?您必须使用reflection循环,并以其名称作为字符串调用该方法