2017-10-29 5 views
-2

세터 쿼리 이름을 생성하고 그래서 같이 같은 JPQL 결과 집합에서 결과 집합에서 모든 필드를 채울 필요가 : 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]); 

문제는이며 추악 해 보이고 많은 공간을 차지합니다.

은 가능한 같은 루프 무엇인가에 대한로하는 것입니다 :

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

나의 수업은 당신이 필요로하는 수업의 예입니다. 이 경우 요약했습니다. –