iBatis异常There is no statement named update in this SqlMap.
最近使用iBatis搭建项目架构的时候遇到了一个异常,如下文所示Caused by: java.lang.RuntimeException: Error parsing XPath '/sqlMapConfig/end()'. Cause: com.ibatis.sqlmap.client.SqlMapException: There is no statement named update in this SqlMap.
但是搜索所有SqlMap的上下文,都没有发现There is no statement named update in this SqlMap
无论是<cacheModel/>还是<update/>都没有遗漏update的statement. 后来经google后发现,原来cacheModel中需要指定namespace, 加上之后就一切正常了。
(此文标记一下,以备不时之需)
产生异常的cacheModel
<cacheModel id="xxx-cache" type ="LRU" readOnly="true" serialize="false"><flushInterval hours="24"/><flushOnExecute statement="insert"/><flushOnExecute statement="update"/><flushOnExecute statement="delete"/><property name="cache-size" value="1000"/></cacheModel><update id="update" parameterClass="...">...</update>
正常的cacheModel配置
<cacheModel id="xxx-cache" type ="LRU" readOnly="true" serialize="false"><flushInterval hours="24"/><flushOnExecute statement="namespace.insert"/><flushOnExecute statement="namespace.update"/><flushOnExecute statement="namespace.delete"/><property name="cache-size" value="1000"/></cacheModel><update id="update" parameterClass="...">...</update>
org.springframework.beans.factory.support.DefaultListableBeanFactory:421 - Destroying singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@1113622: defining beans ; root of factory hierarchy org.springframework.web.context.ContextLoader:215 - Context initialization failedorg.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlMapClient' defined in class path resource : Invocation of init method failed; nested exception is org.springframework.core.NestedIOException: Failed to parse config resource: class path resource ; nested exception is com.ibatis.common.xml.NodeletException: Error parsing XML.Cause: java.lang.RuntimeException: Error parsing XPath '/sqlMapConfig/end()'.Cause: com.ibatis.sqlmap.client.SqlMapException: There is no statement named update in this SqlMap.at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1338)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:473)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)at java.security.AccessController.doPrivileged(Native Method)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:423)at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728)at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:380)at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:255)at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199)at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45)at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3843)at org.apache.catalina.core.StandardContext.start(StandardContext.java:4342)at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:627)at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:553)at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:488)at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1149)at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)at org.apache.catalina.core.StandardService.start(StandardService.java:516)at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)at org.apache.catalina.startup.Catalina.start(Catalina.java:578)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 org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)Caused by: org.springframework.core.NestedIOException: Failed to parse config resource: class path resource ; nested exception is com.ibatis.common.xml.NodeletException: Error parsing XML.Cause: java.lang.RuntimeException: Error parsing XPath '/sqlMapConfig/end()'.Cause: com.ibatis.sqlmap.client.SqlMapException: There is no statement named update in this SqlMap.at org.springframework.orm.ibatis.SqlMapClientFactoryBean.buildSqlMapClient(SqlMapClientFactoryBean.java:342)at org.springframework.orm.ibatis.SqlMapClientFactoryBean.afterPropertiesSet(SqlMapClientFactoryBean.java:292)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1369)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1335)... 39 moreCaused by: com.ibatis.common.xml.NodeletException: Error parsing XML.Cause: java.lang.RuntimeException: Error parsing XPath '/sqlMapConfig/end()'.Cause: com.ibatis.sqlmap.client.SqlMapException: There is no statement named update in this SqlMap.at com.ibatis.common.xml.NodeletParser.parse(NodeletParser.java:62)at com.ibatis.sqlmap.engine.builder.xml.SqlMapConfigParser.parse(SqlMapConfigParser.java:106)at com.ibatis.sqlmap.engine.builder.xml.SqlMapConfigParser.parse(SqlMapConfigParser.java:95)at org.springframework.orm.ibatis.SqlMapClientFactoryBean.buildSqlMapClient(SqlMapClientFactoryBean.java:339)... 42 moreCaused by: java.lang.RuntimeException: Error parsing XPath '/sqlMapConfig/end()'.Cause: com.ibatis.sqlmap.client.SqlMapException: There is no statement named update in this SqlMap.at com.ibatis.common.xml.NodeletParser.processNodelet(NodeletParser.java:123)at com.ibatis.common.xml.NodeletParser.process(NodeletParser.java:105)at com.ibatis.common.xml.NodeletParser.parse(NodeletParser.java:72)at com.ibatis.common.xml.NodeletParser.parse(NodeletParser.java:60)... 45 moreCaused by: com.ibatis.sqlmap.client.SqlMapException: There is no statement named update in this SqlMap.at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.getMappedStatement(SqlMapExecutorDelegate.java:293)at com.ibatis.sqlmap.engine.builder.xml.SqlMapConfigParser$1.process(SqlMapConfigParser.java:124)at com.ibatis.common.xml.NodeletParser.processNodelet(NodeletParser.java:121)... 48 more2009-10-26 9:18:05 org.apache.catalina.core.StandardContext listenerStart严重: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListenerorg.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlMapClient' defined in class path resource : Invocation of init method failed; nested exception is org.springframework.core.NestedIOException: Failed to parse config resource: class path resource ; nested exception is com.ibatis.common.xml.NodeletException: Error parsing XML.Cause: java.lang.RuntimeException: Error parsing XPath '/sqlMapConfig/end()'.Cause: com.ibatis.sqlmap.client.SqlMapException: There is no statement named update in this SqlMap.at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1338)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:473)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)at java.security.AccessController.doPrivileged(Native Method)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:423)at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728)at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:380)at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:255)at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199)at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45)at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3843)at org.apache.catalina.core.StandardContext.start(StandardContext.java:4342)at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:627)at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:553)at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:488)at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1149)at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)at org.apache.catalina.core.StandardService.start(StandardService.java:516)at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)at org.apache.catalina.startup.Catalina.start(Catalina.java:578)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 org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)Caused by: org.springframework.core.NestedIOException: Failed to parse config resource: class path resource ; nested exception is com.ibatis.common.xml.NodeletException: Error parsing XML.Cause: java.lang.RuntimeException: Error parsing XPath '/sqlMapConfig/end()'.Cause: com.ibatis.sqlmap.client.SqlMapException: There is no statement named update in this SqlMap.at org.springframework.orm.ibatis.SqlMapClientFactoryBean.buildSqlMapClient(SqlMapClientFactoryBean.java:342)at org.springframework.orm.ibatis.SqlMapClientFactoryBean.afterPropertiesSet(SqlMapClientFactoryBean.java:292)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1369)at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1335)... 39 moreCaused by: com.ibatis.common.xml.NodeletException: Error parsing XML.Cause: java.lang.RuntimeException: Error parsing XPath '/sqlMapConfig/end()'.Cause: com.ibatis.sqlmap.client.SqlMapException: There is no statement named update in this SqlMap.at com.ibatis.common.xml.NodeletParser.parse(NodeletParser.java:62)at com.ibatis.sqlmap.engine.builder.xml.SqlMapConfigParser.parse(SqlMapConfigParser.java:106)at com.ibatis.sqlmap.engine.builder.xml.SqlMapConfigParser.parse(SqlMapConfigParser.java:95)at org.springframework.orm.ibatis.SqlMapClientFactoryBean.buildSqlMapClient(SqlMapClientFactoryBean.java:339)... 42 moreCaused by: java.lang.RuntimeException: Error parsing XPath '/sqlMapConfig/end()'.Cause: com.ibatis.sqlmap.client.SqlMapException: There is no statement named update in this SqlMap.at com.ibatis.common.xml.NodeletParser.processNodelet(NodeletParser.java:123)at com.ibatis.common.xml.NodeletParser.process(NodeletParser.java:105)at com.ibatis.common.xml.NodeletParser.parse(NodeletParser.java:72)at com.ibatis.common.xml.NodeletParser.parse(NodeletParser.java:60)... 45 moreCaused by: com.ibatis.sqlmap.client.SqlMapException: There is no statement named update in this SqlMap.at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.getMappedStatement(SqlMapExecutorDelegate.java:293)at com.ibatis.sqlmap.engine.builder.xml.SqlMapConfigParser$1.process(SqlMapConfigParser.java:124)at com.ibatis.common.xml.NodeletParser.processNodelet(NodeletParser.java:121)... 48 more2009-10-26 9:18:05 org.apache.catalina.core.StandardContext start严重: Error listenerStart2009-10-26 9:18:05 org.apache.catalina.core.StandardContext start严重: Context startup failed due to previous errors2009-10-26 9:18:05 org.apache.catalina.core.ApplicationContext log信息: Closing Spring root WebApplicationContext2009-10-26 9:18:06 org.apache.catalina.core.ApplicationContext log信息: Initializing Spring root WebApplicationContext
页:
[1]