Java生成setter查询名称
我正在构建一个实体,需要从jpql结果集的结果集中填充所有字段,如下所示: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个周期,看起来很难看,占用
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循环,并以其名称作为字符串调用该方法