티스토리 뷰
Framework/Persistent
MyBatis The content of elements must consist of well-formed character data or markup 오류 조치
호형 2021. 3. 19. 15:38개발을 하고 was를 기동할때 아래와 같은 메세지를 만날 수 있다.
Caused by: org.springframework.core.NestedIOException: Failed to parse mapping resource: 'file [C:\oingdaddy\target\classes\~\oingService.sql]'; nested exception is org.apache.ibatis.builder.BuilderException: Error creating document instance. Cause: org.xml.sax.SAXParseException; lineNumber: 55; columnNumber: 22; The content of elements must consist of well-formed character data or markup.
at org.mybatis.spring.SqlSessionFactoryBean.buildSqlSessionFactory(SqlSessionFactoryBean.java:613)
at org.mybatis.spring.SqlSessionFactoryBean.afterPropertiesSet(SqlSessionFactoryBean.java:491)
mybatis를 사용할때 쿼리를 작성을 잘못해서 문제가 발생을 한 것이다. SAXParseException은 보통 xml 문법이 잘못되었을때 나타나는 오류이고 SAXParseException; lineNumber: 55; columnNumber: 22 이런식으로 잘못된 곳의 위치까지 친절하게 나와있다. 오류가 난 쿼리로 가보자.
SELECT YEAR(GETDATE())-9 AS yyyy
UNION ALL
SELECT yyyy + 1
FROM yearcte
WHERE yyyy + 1 <= YEAR(GETDATE())+10
문제가 난 곳은 정확히 맨 마지막줄 중간에 있는 < 를 나타낸다. xml에서는 <를 태그로 인식하기 때문에 이를 다른 방식으로 표현하거나 아니면 <![CDATA[ 쿼리 ]]> 형식으로 표현을 해야 한다.
<![CDATA[
SELECT YEAR(GETDATE())-9 AS yyyy
UNION ALL
SELECT yyyy + 1
FROM yearcte
WHERE yyyy + 1 <= YEAR(GETDATE())+10
]]>
이렇게 쿼리 전체에 감싸줘도 되고 아니면 문제가 되는 부분만 감싸줘도 된다.
끝!
'Framework > Persistent' 카테고리의 다른 글
iBatis SqlMapConfig.xml datasource JDBC, JNDI 설정 (0) | 2021.09.28 |
---|---|
MyBatis select 결과 null 허용하기 (column, row) (0) | 2021.08.05 |
MyBatis Mapping 방식 (Query ID vs Interface) (0) | 2021.01.22 |
MyBatis란? 기본설정 및 사용방법 (1) | 2020.11.16 |
Mybatis 부적합한 열 유형: 1111 관련 오류가 날때 (1) | 2020.11.11 |
댓글