2017-10-29 9 views
-2

セッタークエリ名を生成し、私はそうのようなのようなJPQL結果セットから結果セットからすべてのフィールドを移入する必要があります:50倍の期間があることJavaは、私は、エンティティを構築してい

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

問題があり、それ醜く見え、たくさんのスペースを占めています。あなたは少し、このような何かを試してみてください

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

'addPeriod(int position、BigDecimal period)'メソッドの方が良いとは思いませんか? –

+0

reflexionを使ってループし、メソッド名を文字列で呼び出す必要があります。https://stackoverflow.com/a/161005/4479402 –

答えて

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) { ... } 
+0

これは答えではありません。 –

+0

@Djory引き続き不正な引数エラーが発生します。あなたの例にあると思われる "obj"とは何ですか? – Daryn

+0

私は悪いです、これはあなたが必要とするクラスのインスタンスです。この場合は要約でした。 –

関連する問題