개발을 잘하고 싶은 개발자

[Java] 이런 에러를 만났다면? There is no READABLE property named '_____' in class 본문

Backend/Java

[Java] 이런 에러를 만났다면? There is no READABLE property named '_____' in class

_소피아 2023. 12. 28. 20:59

여느 때처럼 복붙을 열심히 하다
중간중간 빌드해보지 않고

나를 너무 믿은 나머지 에러를 만났다.

에러 로그의 내용은 아래에 첨부했다.

 There is no READABLE property named 'meditype' in class
 
 
 java.lang.RuntimeException: Error occurred.  Cause: com.ibatis.common.xml.NodeletException: Error parsing XML.  Cause: java.lang.RuntimeException: Error parsing XPath '/sqlMapConfig/sqlMap'.  Cause: com.ibatis.common.xml.NodeletException: Error parsing XML.  Cause: java.lang.RuntimeException: Error parsing XPath '/sqlMap/insert'.  Cause: com.ibatis.common.beans.ProbeException: There is no READABLE property named '____' in class ____'

	at com.ibatis.sqlmap.engine.builder.xml.SqlMapConfigParser.parse(SqlMapConfigParser.java:49)
	at com.ibatis.sqlmap.client.SqlMapClientBuilder.buildSqlMapClient(SqlMapClientBuilder.java:63)
	at com.carehealth.db.DAOConfig.getSqlMapClient(DAOConfig.java:40)

1. 기존 쿼리에 줄맞춤도 안되어 있고,
2. 나름 내가 고친 쿼리를 정리하고 싶고,
3. 정확히 알지도 못하는 테이블의 컬럼을
내 맘대로 대소문자 정리를 했다.

이렇게 저 에러를 만났고, 

at com.ibatis.common.xml.NodeletParser.parse(NodeletParser.java:53)
...
at com.ibatis.common.xml.NodeletParser.processNodelet(NodeletParser.java:123)
...
at com.ibatis.sqlmap.engine.builder.xml.SqlMapParser.parse(SqlMapParser.java:40)
...


뜬금없는 Dao와 VO들의 남발인 에러 리포트를 보고 어디서부터 잘못된 건지... 헤매었다.
중간중간 빌드 해볼껄 후회했다.

구글링으로 원인을 찾고, 해결 방법을 알아내 고쳤더니 결과는 성공이었다.

제목의 저 에러를 그대로 번역하면
"AA라는 이름의 읽기 가능한 속성이 없습니다." 라고 하니

1. 우선 쿼리를 살펴봐야 한다.

2. 물론 내가 고친 쿼리만 확인한다. (stash에 넣어서 테스트해 보니 문제없음;)

3. 저 AA 이름을 검색해서 들어가 있는 모든 쿼리를 봤지만 문제가 없었다.
(항상 이런 오만이 제일 큰 문제였다...)

4. 참고한 블로그 글
2가지 방법이 있었는데, 마지막 방법을 딱 보니 눈이 번쩍였다.

두번째로는 sql질의문을 작성하는데 있어서 대문자를 사용하면 발생한다.

5. 내가 쿼리에 작성한 #AA# 문법에 대소문자를 내 맘대로 바꿔버렸다.

6. 다시 겸손한 마음으로 parameterClass에 Map에서 넘어온 컬럼 aA를 AA로 사용하고 있었다...

 

버그 수정 끝.
회고
- 자만하지 말자
- 겸손하자
- 중간중간 빌드해보자