ibatis-user-java mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From John Chien <john.ch...@ncmail.net>
Subject Re: N+ 1 selects
Date Fri, 30 Sep 2005 18:42:09 GMT

Clienton:

I want to get back a HaspMap that has keys and values.

Each key corresponds to different id (EHS_ID),
Each value is a bean that has all the fields returned from query that
corresponds to that id.

Normally, the query results in a list of bean. Each bean has all the
fields selected in the query.

Since the EHS_ID is unique (primary key of the table), I would like to
get back a HashMap that has
all the EHS_ID as its key and all the columns correspond to a specific
key to be in a bean.

If you can help me in this subject, I will be very appreciate.

Thanks,

John Chien

Clinton Begin wrote:

> Looks to me like you're:
>
> 1) Using an older version of iBATIS or at least an incorrect DTD
> reference that does not support result[@resultMap]
> 2) You're using half of the N+1 selects solution....which will not do
> much for you.
>
> Perhaps ignore this problem for now, and instead state exactly what it
> is you're trying to do. We'll start there and see if it leads to this
> problem again.
>
> Cheers,
> Clinton
>
> On 9/29/05, *John Chien* <john.chien@ncmail.net
> <mailto:john.chien@ncmail.net>> wrote:
>
>     Jean:
>
>     Thank you for your response.
>     That's my fault. My intention actually is not tries to do the N+1
>     selects, but have returned result putting into a bean.
>     This bean will be used as a property of another bean.
>
>     I do not know if my way of doing it is correct or not. Somehow it
>     does not work
>
>     Following is my new try and the trace:
>
>     *****************************************************************************************
>     <sqlMap namespace="EhsInspector">
>
>     <typeAlias alias="ehsInspectors"
>     type="us.nc.state.enr.bets.util.EhsInspectorBean"/>
>     <typeAlias alias="commonFinder"
>     type="us.nc.state.enr.bets.finder.CommonFinder" />
>
>     <resultMap id="getEhsInspectorsANDMap" class="java.util.HashMap" >
>     <result property="id" column="id" />
>     <result property="value"
>     resultMap="EhsInspector.ehsInspectorsMap"/>* <----- This is line 15*
>     </resultMap>
>
>     <resultMap id="ehsInspectorsMap" class="ehsInspectors">
>     <result property="last_name" column="last_name" jdbcType="VARCHAR"
>     javaType="java.lang.String" />
>     <result property="first_name" column="first_name"
>     jdbcType="VARCHAR" javaType="java.lang.String" />
>     <result property="middle_initial" column="middle_initial"
>     jdbcType="VARCHAR" javaType="java.lang.String" />
>     <result property="added_date" column="added_date"
>     jdbcType="VARCHAR" javaType="java.lang.String" />
>     <result property="last_update_date" column="last_update_date"
>     jdbcType="VARCHAR" javaType="java.lang.String" />
>     <result property="last_update_user" column="last_update_user"
>     jdbcType="VARCHAR" javaType="java.lang.String" />
>     </resultMap>
>
>     <select id="getEhsInspectorsAND" parameterClass="commonFinder"
>     resultMap="getEhsInspectorsANDMap">
>
>     SELECT
>     EHS_ID as id,
>     EHS_NAME_LAST as last_name,
>     EHS_NAME_FIRST as first_name,
>     EHS_NAME_MI as middle_initial,
>     EHS_ADDED_DT as added_date,
>     EHS_LAST_UPDATE_DT as last_update_date,
>     EHS_LAST_UPDATE_USER as last_update_user
>     FROM EH.BETS_EHS_INSPECTOR
>     ORDER BY EHS_ID
>     </select>
>
>     </sqlMap>
>     ******************************************************************************************************
>
>     Trace:
>
>     <2005/9/29 下午02時42分36秒 GMT-05:00> <Error> <HTTP> <BEA-101216>
>     <Servlet: "context" failed to preload on startup in Web
>     application: "eh".
>     javax.servlet.ServletException: Error creating bean with name
>     'sqlMapClient' defined in resource
>     [/WEB-INF/dataAccessContext-bets.xml] of ServletContext:
>     Initialization of bean failed; nested exception is
>     com.ibatis.sqlmap.client.SqlMapException: There was an error while
>     building the SqlMap instance.
>     --- The error occurred in
>     us/nc/state/enr/bets/dao/ibatis/maps/EhsInspectorFinder.xml.
>     --- The error occurred while loading the SQL Map resource.
>     --- Cause: com.ibatis.sqlmap.client.SqlMapException: XML Parser
>     Error. Cause: org.xml.sax.SAXException: Error: URI=null Line=15:
>     Attribute "resultMap" must bedeclared for element type "result".
>     Caused by: org.xml.sax.SAXException: Error: URI=null Line=15:
>     Attribute "resultMap" must be declared for element type "result".
>     at
>     weblogic.servlet.internal.ServletStubImpl.createServlet(ServletStubImpl.java:919)
>     at
>     weblogic.servlet.internal.ServletStubImpl.createInstances(ServletStubImpl.java:883)
>     at
>     weblogic.servlet.internal.ServletStubImpl.prepareServlet(ServletStubImpl.java:822)
>     at
>     weblogic.servlet.internal.WebAppServletContext.preloadServlet(WebAppServletContext.java:3333)
>     at
>     weblogic.servlet.internal.WebAppServletContext.preloadServlets(WebAppServletContext.java:3290)
>     at
>     weblogic.servlet.internal.WebAppServletContext.preloadServlets(WebAppServletContext.java:3276)
>     at
>     weblogic.servlet.internal.WebAppServletContext.preloadResources(WebAppServletContext.java:3259)
>     at
>     weblogic.servlet.internal.WebAppServletContext.setStarted(WebAppServletContext.java:5949)
>     at weblogic.servlet.internal.WebAppModule.start(WebAppModule.java:862)
>     at
>     weblogic.j2ee.J2EEApplicationContainer.start(J2EEApplicationContainer.java:2127)
>     at
>     weblogic.j2ee.J2EEApplicationContainer.activate(J2EEApplicationContainer.java:2168)
>     at
>     weblogic.j2ee.J2EEApplicationContainer.activate(J2EEApplicationContainer.java:2115)
>     at
>     weblogic.management.deploy.slave.SlaveDeployer$Application.setActivation(SlaveDeployer.java:3082)
>     at
>     weblogic.management.deploy.slave.SlaveDeployer.setActivationStateForAllApplications(SlaveDeployer.java:1751)
>     at
>     weblogic.management.deploy.slave.SlaveDeployer.resume(SlaveDeployer.java:359)
>     at
>     weblogic.management.deploy.DeploymentManagerServerLifeCycleImpl.resume(DeploymentManagerServerLifeCycleImpl.java:229)
>     at weblogic.t3.srvr.SubsystemManager.resume(SubsystemManager.java:131)
>     at weblogic.t3.srvr.T3Srvr.resume(T3Srvr.java:966)
>     at weblogic.t3.srvr.T3Srvr.run(T3Srvr.java:361)
>     at weblogic.Server.main(Server.java:32)
>     Caused by:
>     org.springframework.beans.factory.BeanCreationException: Error
>     creating bean with name 'sqlMapClient' defined in resource
>     [/WEB-INF/dataAccessContext-bets.xml] of ServletContext:
>     Initialization of bean failed; nested exception is
>     com.ibatis.sqlmap.client.SqlMapException: There was an error while
>     building the SqlMap instance.
>     --- The error occurred in
>     us/nc/state/enr/bets/dao/ibatis/maps/EhsInspectorFinder.xml.
>     --- The error occurred while loading the SQL Map resource.
>     --- Cause: com.ibatis.sqlmap.client.SqlMapException: XML Parser
>     Error. Cause: org.xml.sax.SAXException: Error: URI=null Line=15:
>     Attribute "resultMap" must bedeclared for element type "result".
>     Caused by: org.xml.sax.SAXException: Error: URI=null Line=15:
>     Attribute "resultMap" must be declared for element type "result".
>     at
>     org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:300)
>     at
>     org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:205)
>     at
>     org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:204)
>     at
>     org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:136)
>     at
>     org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:230)
>     at
>     org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:284)
>     at
>     org.springframework.web.context.support.XmlWebApplicationContext.refresh(XmlWebApplicationContext.java:131)
>     at
>     org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:156)
>     at
>     org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:97)
>     at
>     org.springframework.web.context.ContextLoaderServlet.init(ContextLoaderServlet.java:80)
>     at javax.servlet.GenericServlet.init(GenericServlet.java:258)
>     at
>     weblogic.servlet.internal.ServletStubImpl$ServletInitAction.run(ServletStubImpl.java:1028)
>     at
>     weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
>     at
>     weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
>     at
>     weblogic.servlet.internal.ServletStubImpl.createServlet(ServletStubImpl.java:904)
>     ... 19 more
>     Caused by: com.ibatis.sqlmap.client.SqlMapException: There was an
>     error while building the SqlMap instance.
>     --- The error occurred in
>     us/nc/state/enr/bets/dao/ibatis/maps/EhsInspectorFinder.xml.
>     --- The error occurred while loading the SQL Map resource.
>     --- Cause: com.ibatis.sqlmap.client.SqlMapException: XML Parser
>     Error. Cause: org.xml.sax.SAXException: Error: URI=null Line=15:
>     Attribute "resultMap" must bedeclared for element type "result".
>     Caused by: org.xml.sax.SAXException: Error: URI=null Line=15:
>     Attribute "resultMap" must be declared for element type "result".
>     Caused by: com.ibatis.sqlmap.client.SqlMapException: XML Parser
>     Error. Cause: org.xml.sax.SAXException: Error: URI=null Line=15:
>     Attribute "resultMap" must bedeclared for element type "result".
>     Caused by: org.xml.sax.SAXException: Error: URI=null Line=15:
>     Attribute "resultMap" must be declared for element type "result".
>     at
>     com.ibatis.sqlmap.engine.builder.xml.XmlSqlMapClientBuilder.buildSqlMap(XmlSqlMapClientBuilder.java:214)
>     at
>     com.ibatis.sqlmap.client.SqlMapClientBuilder.buildSqlMapClient(SqlMapClientBuilder.java:61)
>     at
>     org.springframework.orm.ibatis.SqlMapClientFactoryBean.afterPropertiesSet(SqlMapClientFactoryBean.java:109)
>     at
>     org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1057)
>     at
>     org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:287)
>     ... 33 more
>     Caused by: com.ibatis.sqlmap.client.SqlMapException: XML Parser
>     Error. Cause: org.xml.sax.SAXException: Error: URI=null Line=15:
>     Attribute "resultMap" must bedeclared for element type "result".
>     Caused by: org.xml.sax.SAXException: Error: URI=null Line=15:
>     Attribute "resultMap" must be declared for element type "result".
>     at
>     com.ibatis.sqlmap.engine.builder.xml.XmlSqlMapClientBuilder.getDoc(XmlSqlMapClientBuilder.java:1286)
>     at
>     com.ibatis.sqlmap.engine.builder.xml.XmlSqlMapClientBuilder.parseSqlMapRef(XmlSqlMapClientBuilder.java:429)
>     at
>     com.ibatis.sqlmap.engine.builder.xml.XmlSqlMapClientBuilder.parseSqlMapConfig(XmlSqlMapClientBuilder.java:240)
>     at
>     com.ibatis.sqlmap.engine.builder.xml.XmlSqlMapClientBuilder.buildSqlMap(XmlSqlMapClientBuilder.java:210)
>     ... 37 more
>     Caused by: org.xml.sax.SAXException: Error: URI=null Line=15:
>     Attribute "resultMap" must be declared for element type "result".
>     at org.apache.xerces.parsers.DOMParser.parse(DOMParser.java:281)
>     at
>     org.apache.xerces.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:206)
>     at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:76)
>     at
>     com.ibatis.sqlmap.engine.builder.xml.XmlSqlMapClientBuilder.getDoc(XmlSqlMapClientBuilder.java:1283)
>     ... 40 more
>
>

Mime
View raw message