Error

[Error][SQL][MyBatis] org.apache.ibatis.ognl.OgnlException: source is null for getProperty(null, "crCu1Tp")

오선지♬ 2025. 5. 17. 14:02
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
반응형