Two things:
1) Thats' an absolutely horrible design. Domain classes should not
call or depend on the DAO layer in any way.
2) You may have hit a limitation of the DB2 driver, possibly multiple
statements may not be open at the same time on a single connection.
No matter what, you should probably rethink that design.
Cheers,
Clinton
On Tue, 22 Feb 2005 16:49:31 -0500, Mark Bennett
<[EMAIL PROTECTED]> wrote:
> Can DAO calls be in a constructor if it is an object created by a Complex
> Property?
>
> First I know this is risky because you might encounter recursion. But if no
> cycle is created, then is this possible at all?
>
> <resultMap id="juvenileResult" class="juvenile">
> <result property="someBean.myBean" column="MYCOLUMN"/>
> </resultMap>
>
> class MyBean {
> private static ProfileService profileService =
> ProfileService.getInstance();
> public MyBean() {
> // *** This will cause another iBatis call while other is
> still in
> progress ***
> List list = profileService.getListOfSuff(1);
> }
> }
>
> Mark
>
> <Feb 22, 2005 4:36:41 PM EST> <Error> <HTTP>
> <[WebAppServletContext(5788681,NCJOIN,/NCJOIN)] Servlet failed with
> Exception
> com.ibatis.dao.client.DaoException: Failed to execute queryForObject - id
> [getJuvenile], parameterObject [20210]. Cause:
> com.ibatis.common.jdbc.exception.NestedSQLException:
> --- The error occurred in ncjoin/persistence/sqlmapdao/sql/Profile.xml.
> --- The error occurred while applying a result map.
> --- Check the Profile.juvenileResult.
> --- The error happened while setting a property on the result object.
> --- Cause: COM.ibm.db2.jdbc.DB2Exception: [IBM][CLI Driver] CLI0125E
> Function sequence error. SQLSTATE=HY010
> Caused by: COM.ibm.db2.jdbc.DB2Exception: [IBM][CLI Driver] CLI0125E
> Function sequence error. SQLSTATE=HY010
> Caused by: com.ibatis.common.jdbc.exception.NestedSQLException:
> --- The error occurred in ncjoin/persistence/sqlmapdao/sql/Profile.xml.
> --- The error occurred while applying a result map.
> --- Check the Profile.juvenileResult.
> --- The error happened while setting a property on the result object.
> --- Cause: COM.ibm.db2.jdbc.DB2Exception: [IBM][CLI Driver] CLI0125E
> Function sequence error. SQLSTATE=HY010
> Caused by: COM.ibm.db2.jdbc.DB2Exception: [IBM][CLI Driver] CLI0125E
> Function sequence error. SQLSTATE=HY010
> at
> com.ibatis.dao.client.template.SqlMapDaoTemplate.queryForObject(SqlMapDaoTem
> plate.java:164)
> at
> ncjoin.persistence.sqlmapdao.ProfileSqlMapDao.getJuvenile(ProfileSqlMapDao.j
> ava:22)
> at java.lang.reflect.Method.invoke(Native Method)
> at com.ibatis.dao.engine.impl.DaoProxy.invoke(DaoProxy.java:72)
> at $Proxy141.getJuvenile(Unknown Source)
> at ncjoin.service.ProfileService.getJuvenile(ProfileService.java:36)
> at
> ncjoin.main.servlet.RequestProcessor.processActionPerform(RequestProcessor.j
> ava:54)
> at
> org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
> at
> org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
> at
> org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
> at
> weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java
> :263)
> at
> weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java
> :200)
> at
> weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletCo
> ntext.java:2390)
> at
> weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java
> :1959)
> at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:137)
> at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
>
> Caused by:
> com.ibatis.common.jdbc.exception.NestedSQLException:
> --- The error occurred in ncjoin/persistence/sqlmapdao/sql/Profile.xml.
> --- The error occurred while applying a result map.
> --- Check the Profile.juvenileResult.
> --- The error happened while setting a property on the result object.
> --- Cause: COM.ibm.db2.jdbc.DB2Exception: [IBM][CLI Driver] CLI0125E
> Function sequence error. SQLSTATE=HY010
> Caused by: COM.ibm.db2.jdbc.DB2Exception: [IBM][CLI Driver] CLI0125E
> Function sequence error. SQLSTATE=HY010
> at
> com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryWith
> Callback(GeneralStatement.java:180)
> at
> com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryForO
> bject(GeneralStatement.java:99)
> at
> com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForObject(SqlMapEx
> ecutorDelegate.java:561)
> at
> com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForObject(SqlMapEx
> ecutorDelegate.java:536)
> at
> com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForObject(SqlMapSession
> Impl.java:97)
> at
> com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.queryForObject(SqlMapClientIm
> pl.java:69)
> at
> com.ibatis.dao.client.template.SqlMapDaoTemplate.queryForObject(SqlMapDaoTem
> plate.java:162)
> at
> ncjoin.persistence.sqlmapdao.ProfileSqlMapDao.getJuvenile(ProfileSqlMapDao.j
> ava:22)
> at java.lang.reflect.Method.invoke(Native Method)
> at com.ibatis.dao.engine.impl.DaoProxy.invoke(DaoProxy.java:72)
> at $Proxy141.getJuvenile(Unknown Source)
> at ncjoin.service.ProfileService.getJuvenile(ProfileService.java:36)
> at
> ncjoin.main.servlet.RequestProcessor.processActionPerform(RequestProcessor.j
> ava:54)
> at
> org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
> at
> org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
> at
> org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
> at
> weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java
> :263)
> at
> weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java
> :200)
> at
> weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletCo
> ntext.java:2390)
> at
> weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java
> :1959)
> at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:137)
> at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
>
> Caused by:
> COM.ibm.db2.jdbc.DB2Exception: [IBM][CLI Driver] CLI0125E Function sequence
> error. SQLSTATE=HY010
> at
> COM.ibm.db2.jdbc.app.SQLExceptionGenerator.throw_SQLException(Unknown
> Source)
> at
> COM.ibm.db2.jdbc.app.SQLExceptionGenerator.throw_SQLException(Unknown
> Source)
> at
> COM.ibm.db2.jdbc.app.SQLExceptionGenerator.check_return_code(Unknown
> Source)
> at COM.ibm.db2.jdbc.app.DB2ResultSet.next(Unknown Source)
> at
> com.ibatis.sqlmap.engine.execution.SqlExecutor.handleResults(SqlExecutor.jav
> a:353)
> at
> com.ibatis.sqlmap.engine.execution.SqlExecutor.executeQuery(SqlExecutor.java
> :179)
> at
> com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.sqlExecuteQuery(
> GeneralStatement.java:200)
> at
> com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryWith
> Callback(GeneralStatement.java:168)
> at
> com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryForO
> bject(GeneralStatement.java:99)
> at
> com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForObject(SqlMapEx
> ecutorDelegate.java:561)
> at
> com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForObject(SqlMapEx
> ecutorDelegate.java:536)
> at
> com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForObject(SqlMapSession
> Impl.java:97)
> at
> com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.queryForObject(SqlMapClientIm
> pl.java:69)
> at
> com.ibatis.dao.client.template.SqlMapDaoTemplate.queryForObject(SqlMapDaoTem
> plate.java:162)
> at
> ncjoin.persistence.sqlmapdao.ProfileSqlMapDao.getJuvenile(ProfileSqlMapDao.j
> ava:22)
> at java.lang.reflect.Method.invoke(Native Method)
> at com.ibatis.dao.engine.impl.DaoProxy.invoke(DaoProxy.java:72)
> at $Proxy141.getJuvenile(Unknown Source)
> at ncjoin.service.ProfileService.getJuvenile(ProfileService.java:36)
> at
> ncjoin.main.servlet.RequestProcessor.processActionPerform(RequestProcessor.j
> ava:54)
> at
> org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
> at
> org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
> at
> org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
> at
> weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java
> :263)
> at
> weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java
> :200)
> at
> weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletCo
> ntext.java:2390)
> at
> weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java
> :1959)
> at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:137)
> at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
> >
>
>