【问题标题】:Java generate setter query namesJava 生成 setter 查询名称
【发布时间】:2018-04-10 21:41:32
【问题描述】:

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

问题是有 50x 个周期,而且看起来很丑而且占用大量空间。

是否可以像这样作为 for 循环来做:

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

【问题讨论】:

  • 使用addPeriod(int position, BigDecimal period) 方法不是更好吗?
  • 你必须使用反射循环并以他的名字作为字符串调用方法stackoverflow.com/a/161005/4479402

标签: java hibernate jpql


【解决方案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) { ... }

【讨论】:

  • 这更像是一个评论而不是一个答案。
  • @Djory 我不断收到非法参数错误。您的示例中的“obj”应该是什么?
  • 我的错,这是你需要的类的实例。在这种情况下,它是摘要。
猜你喜欢
  • 2017-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-15
  • 1970-01-01
  • 2011-01-30
相关资源
最近更新 更多