本帖最后由 yujun32 于 2012-09-28 14:34:23 编辑

解决方案 »

  1.   

    把sql打印出来,然后执行下,看哪里错了
      

  2.   

    指出的是ibatis中用sql2005也能用#的,然后呢ibatis的配置文件中能直接用<>吗?我之前一直用的是lt;gt;  上面都是我的拙见,如果说错了别喷哈。O(∩_∩)O哈哈~。
      

  3.   

    [INFO ] [15:40:03] org.springframework.beans.factory.xml.XmlBeanDefinitionReader - Loading XML bean definitions from class path resource [org/springframework/jdbc/support/sql-error-codes.xml]
    [INFO ] [15:40:03] org.springframework.jdbc.support.SQLErrorCodesFactory - SQLErrorCodes loaded: [DB2, Derby, H2, HSQL, Informix, MS-SQL, MySQL, Oracle, PostgreSQL, Sybase]
    Exception in thread "timerFactory" org.springframework.jdbc.BadSqlGrammarException: SqlMapClient operation; bad SQL grammar []; nested exception is com.ibatis.common.jdbc.exception.NestedSQLException:   
    --- The error occurred in com/zhitengda/valueobject/sqlmap/Tab_hr_tms.xml.  
    --- The error occurred while applying a parameter map.  
    --- Check the getTabTms-InlineParameterMap.  
    --- Check the statement (query failed).  
    --- Cause: com.microsoft.sqlserver.jdbc.SQLServerException: '-' 附近有语法错误。
    Caused by: com.ibatis.common.jdbc.exception.NestedSQLException:   
    --- The error occurred in com/zhitengda/valueobject/sqlmap/Tab_hr_tms.xml.  
    --- The error occurred while applying a parameter map.  
    --- Check the getTabTms-InlineParameterMap.  
    --- Check the statement (query failed).  
    --- Cause: com.microsoft.sqlserver.jdbc.SQLServerException: '-' 附近有语法错误。
    at com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryWithCallback(GeneralStatement.java:185)
    at com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryForList(GeneralStatement.java:123)
    at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(SqlMapExecutorDelegate.java:615)
    at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(SqlMapExecutorDelegate.java:589)
    at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForList(SqlMapSessionImpl.java:118)
    at org.springframework.orm.ibatis.SqlMapClientTemplate$3.doInSqlMapClient(SqlMapClientTemplate.java:268)
    at org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemplate.java:193)
    at org.springframework.orm.ibatis.SqlMapClientTemplate.executeWithListResult(SqlMapClientTemplate.java:219)
    at org.springframework.orm.ibatis.SqlMapClientTemplate.queryForList(SqlMapClientTemplate.java:266)
    at com.zhitengda.services.dao.TabHrTmsDao.getTabTmsList(TabHrTmsDao.java:25)
    at com.zhitengda.services.TabHrTmsServiceImpl.getTabTmsList(TabHrTmsServiceImpl.java:28)
    at com.zhitengda.jbos.TabTmsJobs.run(TabTmsJobs.java:34)
    at java.util.TimerThread.mainLoop(Timer.java:512)
    at java.util.TimerThread.run(Timer.java:462)
    Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: '-' 附近有语法错误。
    at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(Unknown Source)
    at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(Unknown Source)
    at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(Unknown Source)
    at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(Unknown Source)
    at com.microsoft.sqlserver.jdbc.TDSCommand.execute(Unknown Source)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(Unknown Source)
    at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(Unknown Source)
    at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(Unknown Source)
    at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.execute(Unknown Source)
    at org.apache.commons.dbcp.DelegatingPreparedStatement.execute(DelegatingPreparedStatement.java:169)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at com.ibatis.common.jdbc.logging.PreparedStatementLogProxy.invoke(PreparedStatementLogProxy.java:62)
    at $Proxy2.execute(Unknown Source)
    at com.ibatis.sqlmap.engine.execution.SqlExecutor.executeQuery(SqlExecutor.java:186)
    at com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.sqlExecuteQuery(GeneralStatement.java:205)
    at com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryWithCallback(GeneralStatement.java:173)
    ... 13 more
    好诡异,这错不影响我数据的查询,我把log4j DEBUG打印,发现ibatis设值、sql、取值都是正常的,但是取完值后,突然冒出这个错误
      

  4.   

    <![CDATA[ ]]> 这个东西是可以把<>等特殊字符转义的(好吧,我一直把他认为java中的‘\’转义符),sql 2005中, “TOP ?”这种写法不能被识别,朋友你可以试下,我昨天弄类似分页的sql,一直报‘@P0’的错误,换了“$”符号后才没问题
      

  5.   

     你把SQL放到SqlServer工具里执行一下,能成功不?
      

  6.   

    难道大家都没出现过这种错误?ibatis xml配置文件进行sql拼接都木有过?JDBC测试了下,木有问题
      

  7.   

      $minSize$
    改为
    #minSize#还有下面的