ibatis EgovMap 문의
- 작성자 :
- 이**맵
- 작성일 :
- 2025-02-17 15:35:06
- 조회수 :
- 176
- 구분 :
- 개발환경 / 4.0
- 진행상태 :
- 완료
Q
안녕하세요. ibatis 환경에서 EgovMap 사용 도중 궁금한 점이 생겨 문의드립니다.
데이터 조회시(쿼리) resultClass 를 EgovMap 으로 지정 후
DAO 에서 return 값을 List<EgovMap> 이 아닌 List<testVO> 로 데이터를 받으며 보내고 있습니다.
서비스단에서도 List<testVO> 로 받고 있고 해당 값을 반복문을 돌며 확인 결과 List의 index 마다 EgovMap 의
카멜케이스로 적용된 데이터들이 정상적으로 들어가 있습니다.
1. testVO에는 없는 값(예 : TEST_ID) 이 쿼리상에서 컬럼으로 존재합니다. 이 값이 서비스단에서도 보이는데, 어떻게 보이게 되는지 궁금합니다.
2. 서비스단에서 리턴받은 List<testVO> 를 반복문을 돌며 get(index).getClass 를 해보았는데
EgovMap cannot be cast to testVO(ClassCastException) 에러가 출력됩니다.
해당 리스트의 인덱스의 값 만 출력해보면 에러 없이 값이 정상적으로 출력되는데, getClass 만 안 먹히는 이유가 궁금합니다.
데이터 조회시(쿼리) resultClass 를 EgovMap 으로 지정 후
DAO 에서 return 값을 List<EgovMap> 이 아닌 List<testVO> 로 데이터를 받으며 보내고 있습니다.
서비스단에서도 List<testVO> 로 받고 있고 해당 값을 반복문을 돌며 확인 결과 List의 index 마다 EgovMap 의
카멜케이스로 적용된 데이터들이 정상적으로 들어가 있습니다.
1. testVO에는 없는 값(예 : TEST_ID) 이 쿼리상에서 컬럼으로 존재합니다. 이 값이 서비스단에서도 보이는데, 어떻게 보이게 되는지 궁금합니다.
2. 서비스단에서 리턴받은 List<testVO> 를 반복문을 돌며 get(index).getClass 를 해보았는데
EgovMap cannot be cast to testVO(ClassCastException) 에러가 출력됩니다.
해당 리스트의 인덱스의 값 만 출력해보면 에러 없이 값이 정상적으로 출력되는데, getClass 만 안 먹히는 이유가 궁금합니다.
환경정보
-
- OS 정보 :
- 표준프레임워크 버전 :
- JDK(JRE) 정보 : 1.8
- WAS 정보 :
- DB 정보 : oracle
- 기타 환경 정보 : ibatis
A
안녕하세요.
표준프레임워크센터입니다.
EgovMap은 Map형태의 클래스로 iBatis(myBatis) parameterClass 또는 resultClass에서
사용할 수 있도록 제공되는 클래스입니다.
여기에 추가적으로 ListOrderedMap을 상속받는 클래스를 생성하고 PUT함수를 가로채
새로운 Map객체를 만들어서 Key에 해당되는 부분을 CamelCase 방식으로 치환하여 적용합니다.
따라서, vo의 설정과는 무관하게 resultClass에 정의된 항목으로 구성되며
ListOrderedMap 클래스를 상속받아 생성되므로 단순히 getClass 로 변환했을 때
ClassCastException 오류가 발생할 수 있습니다.
그러므로 resultClass 정의된대로 생성된 EgovMap을 사용하던지
결과를 받는 객체를 VO로 변경하여 사용하시기 바랍니다.
기타 자세한 사항은 다음 위키가이드 항목을 살펴보시면 참고 가능합니다.
https://www.egovframe.go.kr/wiki/doku.php?id=egovframework:rte:psl:data_access&s[]=dataaccess
감사합니다.
표준프레임워크센터입니다.
EgovMap은 Map형태의 클래스로 iBatis(myBatis) parameterClass 또는 resultClass에서
사용할 수 있도록 제공되는 클래스입니다.
여기에 추가적으로 ListOrderedMap을 상속받는 클래스를 생성하고 PUT함수를 가로채
새로운 Map객체를 만들어서 Key에 해당되는 부분을 CamelCase 방식으로 치환하여 적용합니다.
따라서, vo의 설정과는 무관하게 resultClass에 정의된 항목으로 구성되며
ListOrderedMap 클래스를 상속받아 생성되므로 단순히 getClass 로 변환했을 때
ClassCastException 오류가 발생할 수 있습니다.
그러므로 resultClass 정의된대로 생성된 EgovMap을 사용하던지
결과를 받는 객체를 VO로 변경하여 사용하시기 바랍니다.
기타 자세한 사항은 다음 위키가이드 항목을 살펴보시면 참고 가능합니다.
https://www.egovframe.go.kr/wiki/doku.php?id=egovframework:rte:psl:data_access&s[]=dataaccess
감사합니다.