ibatis-user-java mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Clinton Begin <clinton.be...@gmail.com>
Subject Re: Can DAO calls be in a constructor...
Date Wed, 23 Feb 2005 02:08:38 GMT
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
<mark.bennett@ncmail.net> 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)
> >
> 
>

Mime
View raw message