프로젝트 진행 중 이미지 업로드 한 뒤 경로를 DB에 넘겨줬는데 값이 아예 없는 것도 아닌데도 xml이 아예 작동이 안하는 에러 발생.
눈에 띄게 뭐가 보이는것도 없고 해서 parameterType이 문젠가 해서 바꿔보기도 하고 오타를 찾아보기도 하고 Mapper가 연결이 안되었나 해서 다른 페이지로 테스트도 해봤으나...
동일한 Mapper로 select는 정상 작동. 이미지 업로드는 최대 5장인데 계속 하다가 우연치않게 5장 선택해서 등록버튼 눌렀더니 되네...?
그래서 다시 3,4장 정도만 넣어봤더니 또 안됨 ㅠㅠ
null값이 안들어 가는듯 해서 다른 게시판으로 넘어가서 일부러 null값을 보내봤지만 그 페이지에서는 정상 작동했다.
혹~시나해서 null값이 있으면 안넘어가는 경우가 발생할 수 있는지 구글링해봤는데 역시 그런 경우가 발생할 수 있다고 해결법이 나와있었음.
해결방법은 mybatis-config.xml에
<configuration>
<settings>
<setting value="VARCHAR" name="jdbcTypeForNull"/>
</settings>
</configuration>
이렇게 추가해줬더니 된다.
<configuration>
<settings>
<setting value="VARCHAR" name="jdbcTypeForNull"/>
</settings>
<typeAliases>
<package name="com.board.project" />
</typeAliases>
</configuration>
typeAliases를 사용해야해서 현재는 이렇게 작성 되어있는데 처음에는 typeAliases 밑에 settings를 넣었더니 configuration옆에 에러가 떴다.
The content of element type "configuration" must match
"(properties?,settings?,typeAliases?,typeHandlers?,objectFactory?,objectWrapperFactory?,reflectorFactory?,plugins?,environments?,databaseIdProvider?,mappers?)".
구성내용이 일치해야한다는 뜻이던데 처음 봤을때는 뭐야 settings도 있는데 왜 안돼 라고 생각했으나.
아무래도 우선순위별로 적혀 있는듯 하다.
plugins를 typeAliases 위에 적어봤더니 같은 에러 발생. 밑에다 적으면 발생하지 않았다.
그리고 처음 찾은 해결책은 또 다른것이었는데
<setting name="callSettersOnNulls" value="true"/>
이렇게 추가하는것이었다.
근데 이건 안되던데... 이걸 찾은 블로그에서는 VO를 사용하지 않고 resultType을 HashMap으로 구성했을 때 Null이 결과인 값은 Map의 키에 저장되지 않기 때문에 그때의 해결책이라고 적어주셨다.
보면서도 이건 HashMap으로 가져오는게 아니라 안될것 같은데...하면서 하긴 했는데 결국 안됐고 HashMap을 사용해서 넘겨줄때 작성하는 구문인것 같다.
아 그리고 value가 VARCHAR로 되어있기 때문에 다른 타입이라면 또 작성해줘야 하는 불편함이 있는 듯 하다.
지금 제일 궁금하고 문제인 점은 왜! 다른 페이지에서는 null을 넘겨도 문제가 없는데 여기서만 문제가 발생했는지다....
'Spring' 카테고리의 다른 글
Spring MVC (0) | 2021.02.16 |
---|---|
Spring과 SpringBoot 의 차이 (0) | 2021.02.15 |
getRealPath("") 경로 wtpwebapps에서 변경하기 (0) | 2020.10.29 |
The prefix "mvc" for element "mvc:interceptors" is not bound. (0) | 2020.10.21 |
Spring Security (0) | 2020.07.28 |