728x90
반응형
org.apache.ibatis.ognl.OgnlException: source is null for getProperty(null, "crCu1Tp")
이 에러는 MyBatis의 OGNL(Object-Graph Navigation Language) 표현식을 평가하는 중
dldKeyMap이 null이기 때문에 발생한 것입니다. 즉, 아래 표현식에서:
<if test="dldKeyMap.crCu1Tp != null and dldKeyMap.crCu1Tp == true">
dldKeyMap 자체가 null이라서 .crCu1Tp를 평가하려고 하다가 OgnlException이 발생했습니다.
🔍 원인 요약
- dldKeyMap이 null인데 그 안의 프로퍼티에 접근하려 해서 에러 발생.
- OGNL에서는 상위 객체(dldKeyMap)가 null일 경우, 그 하위 프로퍼티에 접근하면 예외가 발생합니다.
✅ 해결 방법
1. dldKeyMap의 null 체크 먼저 하기
<if> 조건에서 dldKeyMap이 null인지 먼저 확인해야 합니다:
<if test="dldKeyMap != null and dldKeyMap.crCu1Tp != null and dldKeyMap.crCu1Tp == true">
2. 또는 SQL에서 이 조건을 분리하거나 로직적으로 제어
예를 들어, Java 코드에서 dldKeyMap이 null일 경우 해당 필드 자체를 MyBatis로 넘기지 않도록 처리할 수도 있습니다.
✅ 보완 팁
- 조건이 길어질 경우, 서비스 로직에서 분기 처리해서 Map<String, Object> 형태로 넘겨줄 때 아예 dldKeyMap을 null이 아닌 빈 Map으로 초기화하는 것도 하나의 방법입니다.
- 예외 메시지에서도 source is null for getProperty(null, "crCu1Tp")라고 명확하게 "null에서 crCu1Tp를 가져올 수 없다"고 알려주고 있으므로, 첫 번째 조건을 철저히 체크하는 습관이 중요합니다.
728x90
반응형