Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 로딩이미지변경
- loadingimage
- flex-grow
- 넥사크로loadingimage
- react
- HTML
- DB #데이터베이스
- gif초기화
- 스프링 빈
- 코딩
- singleton container
- setrealrowsize
- singleton
- 마진상쇄
- aws
- 넥사크로
- 톰캣실행
- 싱글톤
- cron표현식
- Grid
- BEAN
- flex-basis
- 싱글톤컨테이너
- decoratetext
- Spring
- frontend
- CSS
- 빈
- annotaion
- WITH절
Archives
- Today
- Total
All Day Tired
PersistenceException Cause : java.lang.NumberFormatException: for input String: 본문
Back/DB
PersistenceException Cause : java.lang.NumberFormatException: for input String:
yu.dev 2024. 9. 10. 18:10마이바티스로 쿼리를 조회하는데
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exception.PersistenceException:
### Error querying databas. Cause: java.lang.NumberFormatException: For input string: "[문제의 string]"
이런 에러가 떴다....
동적 쿼리로 <if> 태그의 조건으로 그냥 useYn == 'Y'를 써줬을 뿐인데 자꾸 이런 에러가 나서 서치해보니까
OGNL의 문제였다...
그러면 OGNL이란 무엇인가
OGNL(Object-Graph Navigation Language)
- Java 객체의 속성, 메서드, 컬렉션, 배열 등에 접근하고 조작할 수 있는 표현식 언어
그래서 동적쿼리를 쓸 때 반드시 OGNL을 쓸 수 밖에 없는 것
나의 경우처럼 <if>태그 안에 useYn이라고 쓴것이 OGNL
그러면 이게 왜 문제냐
OGNL은 '', 'N' 이렇게 작은 따옴표로 감싸고 한개의 문자만 들어가 있을 때 char형으로 보기 때문에 numberFormatException을 일으킨다.
왜냐하면 Java에서는 N이라는 char형 변수를 N으로 저장하는게 아니라 N의 코드값(숫자)를 저장하기 때문
따라서 이런 에러가 일어나지 않게 하기위해서는
해결법
동적쿼리를 사용할 때 "로 시작해서 문자를 ''로 감싸지 말고 애초에 '로 시작해서 비교할 문자를 ""로 감싸도록 하자
<if test = 'useYn == "Y"'>
'Back > DB' 카테고리의 다른 글
오라클 날짜 DATE 소요시간 (0) | 2024.09.12 |
---|---|
with절 트리구조 검색 조회 시 상위노드도 조회 (0) | 2024.09.04 |
CTE (1) | 2024.09.03 |
인덱스 컬럼 변경 주의(where 조건) (0) | 2024.02.15 |
Comments