♣ Tech & Biz Salon/Tech

ibatis Exception - java.util.NoSuchElementException

TasteGod 2009. 12. 21. 22:22

오늘 만난 에러메시지

***********************************************

java.util.NoSuchElementException
    at java.util.StringTokenizer.nextToken(Unknown Source)
    at com.ibatis.sqlmap.engine.mapping.sql.simple.SimpleDynamicSql.processDynamicElements(SimpleDynamicSql.java:90)
    at com.ibatis.sqlmap.engine.mapping.sql.simple.SimpleDynamicSql.getSql(SimpleDynamicSql.java:45)
    at com.ibatis.sqlmap.engine.mapping.sql.dynamic.DynamicSql.process(DynamicSql.java:90)
    at com.ibatis.sqlmap.engine.mapping.sql.dynamic.DynamicSql.getSql(DynamicSql.java:52)
    at com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryForList(GeneralStatement.java:181)
    at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(SqlMapExecutorDelegate.java:615)

.....................

    at tastegod.dao.MlangInfoDao.searchMlangInfoMeta(MlangInfoDao.java:104)
    at tastegod.dao.MlangInfoDao$$FastClassByCGLIB$$c4d86e67.invoke(<generated>)
    at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
    at org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:696)

.......................

***********************************************

 

엥 저럴 에러날 이유가 없는데 왜 그럴까... 메모리가 딸려서 sqlmap 로딩이 부실하게 되었겠지... 하고 몇번 탐캣 재기동을 해도 그대로다.

다시 한 번 뜯어봤더니... 헐... 이거였다.

 

sql 에 이런걸 내가 썼었다.

 

AND A.TABLE_NAME NOT LIKE 'BIN$%'

 

$ 요놈 달러표시를 썼으니... 파라미터가 있나 뒤진것이었다.

 

자, 그럼 어떻게 escape 할 것인가?

$ ==> $$

# ==> ##

 

구글링 하니 떡하니 답 나와주시고~

http://opensource.atlassian.com/confluence/oss/display/IBATIS/How+do+I+use+POUND+or+DOLLAR+symbols+in+my+queries

 

이 글은 스프링노트에서 작성되었습니다.