Mysql null값 datetime 컬럼 업데이트 시 에러
- 작성자 :
- 유*훈
- 작성일 :
- 2014-01-16 14:14:20
- 조회수 :
- 2,333
- 구분 :
- 실행환경
- 진행상태 :
- 완료
Q
전자정부 프레임웍에 Mysql을 연동중입니다.
Mysql의 컬럼 stat_date는 DateTime으로 설정 되어 있고
null이 허용가능합니다.
최초에 CodeGen을 통해 VO는 java.util.Date Type으로 설정되고
iBatis의 Sql-Map에의 ResultMap에는
<result property="statDate" column="stat_date" columnIndex="59" />
로 설정했습니다.
최초 Select를 한 값에는 statDate값은 null로 들어가있고
Update를 할경우에
Field error in object 'statVO' on field 'statDate': rejected value []; codes [typeMismatch.statVO.statDate,typeMismatch.statDate,typeMismatch.java.util.Date,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [statVO.statDate,statDate]; arguments []; default message [statDate]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'java.util.Date' for property 'statDate'; nested exception is java.lang.IllegalArgumentException: Could not parse date: Unparseable date: ""]
위와 같은 에러를 리턴합니다.
그래서 혹시나 해서 VO의 type을 java.lang.String으로 설정을 했더니
Data truncation: Incorrect datetime value: '' for column 'stat_date' at row 1
위와 같은 에러를 리턴합니다.
혹시나 해서
context-datasource.xml의
datasource값의
<property name="url" value="jdbc:mysql://localhost:3306/test?zeroDateTimeBehavior=convertToNull"/>
zeroDateTimeBehavior값을 설정해보았으나 동일한 증상이 나타납니다.
혹시 이 해결책에대해서 아시는분 답변좀 부탁드립니다.
Mysql의 컬럼 stat_date는 DateTime으로 설정 되어 있고
null이 허용가능합니다.
최초에 CodeGen을 통해 VO는 java.util.Date Type으로 설정되고
iBatis의 Sql-Map에의 ResultMap에는
<result property="statDate" column="stat_date" columnIndex="59" />
로 설정했습니다.
최초 Select를 한 값에는 statDate값은 null로 들어가있고
Update를 할경우에
Field error in object 'statVO' on field 'statDate': rejected value []; codes [typeMismatch.statVO.statDate,typeMismatch.statDate,typeMismatch.java.util.Date,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [statVO.statDate,statDate]; arguments []; default message [statDate]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'java.util.Date' for property 'statDate'; nested exception is java.lang.IllegalArgumentException: Could not parse date: Unparseable date: ""]
위와 같은 에러를 리턴합니다.
그래서 혹시나 해서 VO의 type을 java.lang.String으로 설정을 했더니
Data truncation: Incorrect datetime value: '' for column 'stat_date' at row 1
위와 같은 에러를 리턴합니다.
혹시나 해서
context-datasource.xml의
datasource값의
<property name="url" value="jdbc:mysql://localhost:3306/test?zeroDateTimeBehavior=convertToNull"/>
zeroDateTimeBehavior값을 설정해보았으나 동일한 증상이 나타납니다.
혹시 이 해결책에대해서 아시는분 답변좀 부탁드립니다.
A
안녕하세요. 유동훈님.
update 처리 시 파라미터 값이 null이 전달 될 때에, 적적한 값으로 type-casting이 되지 않아 발생된 문제입니다.
이 경우는 update(또는 insert)처리 사 파라미터 방식은 "#stat_date#"에서 "#stat_date:DATETIME:NO_ENTRY#"와 같이 변경하시면 되실 것 같습니다.
그럼, 즐거운 하루되십시오.
감사합니다.
update 처리 시 파라미터 값이 null이 전달 될 때에, 적적한 값으로 type-casting이 되지 않아 발생된 문제입니다.
이 경우는 update(또는 insert)처리 사 파라미터 방식은 "#stat_date#"에서 "#stat_date:DATETIME:NO_ENTRY#"와 같이 변경하시면 되실 것 같습니다.
그럼, 즐거운 하루되십시오.
감사합니다.