ibatis-user-java mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Peter Andrews <peter.andr...@Dartmouth.EDU>
Subject Re: com.ibatis.sqlmap.client.SqlMapException: Duplicate prepared statement found. This is likely a bug.
Date Thu, 16 Nov 2006 16:20:57 GMT
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
Thank you Brandon for your replies on this thread.<br>
<br>
I did end up trying to make a simpler case. I started to use ResultMaps
to populate the complex type and can still replicate the problem. Since
I believe this is a true iBATIS bug I sent a simplified description and
test case to the ibatis dev mailing list - see the thread entitled
'Caught exception: 'Duplicate prepared statement found.&nbsp; This is likely
a bug.''<br>
<br>
Regarding the use of 'Statement', since I am using stored
procedures/functions exclusively I did not see any advantage of
'procedure' over statement. In particular, it bothered me to use a
'procedure' element for stored functions and then need to use a SELECT
in calling the function. While writing this, I just tried changing
'statement' to 'procedure' and my very first call threw a null pointer
exception:<br>
<br>
Changing this:<br>
&nbsp; &lt;statement id="getResearcherByUsername"&nbsp; parameterClass="String"
resultClass="Researcher" cacheModel="bigCache"&gt;<br>
&nbsp;&nbsp;&nbsp; CALL getResearcherByUsername(#pUserName:VARCHAR#)<br>
&nbsp; &lt;/statement&gt;<br>
&nbsp; <br>
to:<br>
&nbsp; &lt;procedure id="getResearcherByUsername"&nbsp; parameterClass="String"
resultClass="Researcher" cacheModel="bigCache"&gt;<br>
&nbsp;&nbsp;&nbsp; CALL getResearcherByUsername(#pUserName:VARCHAR#)<br>
&nbsp; &lt;/procedure&gt;<br>
&nbsp; <br>
resulted in this:<br>
<br>
2006-11-16 11:18:24,350 INFO : iBATIS SqlMap for db 'GeneDataset'
initialized<br>
2006-11-16 11:18:24,351 DEBUG: queryForObject getResearcherByUsername
passing: PeterVermont<br>
com.ibatis.common.jdbc.exception.NestedSQLException:&nbsp;&nbsp; <br>
--- The error occurred in
org/epistasis/db/geneDataset/GeneDataset.xml.&nbsp; <br>
--- The error occurred while executing query procedure.&nbsp; <br>
--- Check the CALL getResearcherByUsername(?).&nbsp; <br>
--- Check the SQL Statement (preparation failed).&nbsp; <br>
--- Cause: java.lang.NullPointerException<br>
Caused by: java.lang.NullPointerException<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at
com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryWithCallback(GeneralStatement.java:188)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at
com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryForObject(GeneralStatement.java:104)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at
com.ibatis.sqlmap.engine.mapping.statement.CachingStatement.executeQueryForObject(CachingStatement.java:79)<br>
2006-11-16 11:18:24,690 ERROR: Static initializer Caught an exception:
com.ibatis.common.jdbc.exception.RuntimeSQLException:
com.ibatis.common.jdbc.exception.NestedSQLException:&nbsp;&nbsp; <br>
--- The error occurred in
org/epistasis/db/geneDataset/GeneDataset.xml.&nbsp; <br>
--- The error occurred while executing query procedure.&nbsp; <br>
--- Check the CALL getResearcherByUsername(?).&nbsp; <br>
--- Check the SQL Statement (preparation failed).&nbsp; <br>
--- Cause: java.lang.NullPointerException<br>
Caused by: java.lang.NullPointerException<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at
com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForObject(SqlMapExecutorDelegate.java:566)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at
com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForObject(SqlMapExecutorDelegate.java:541)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at
com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForObject(SqlMapSessionImpl.java:106)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at
com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.queryForObject(SqlMapClientImpl.java:83)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at
org.epistasis.db.SqlMapClientWrapper.queryForObject(SqlMapClientWrapper.java:22)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at
org.epistasis.db.geneDataset.GeneDatasetDbAccess.getResearcherByUsername(GeneDatasetDbAccess.java:93)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at
org.epistasis.db.geneDataset.GeneDatasetDbAccess.login(GeneDatasetDbAccess.java:47)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at
org.epistasis.eva.gui.JDialogLogin.btnLoginActionPerformed(JDialogLogin.java:125)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at
org.epistasis.eva.gui.JDialogLogin.access$100(JDialogLogin.java:21)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at
org.epistasis.eva.gui.JDialogLogin$2.actionPerformed(JDialogLogin.java:65)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at
javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1849)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at
javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2169)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at
javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at
javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at
javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:234)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at java.awt.Component.processMouseEvent(Component.java:5488)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at
javax.swing.JComponent.processMouseEvent(JComponent.java:3126)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at java.awt.Component.processEvent(Component.java:5253)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at java.awt.Container.processEvent(Container.java:1966)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at java.awt.Component.dispatchEventImpl(Component.java:3955)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at java.awt.Container.dispatchEventImpl(Container.java:2024)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at java.awt.Component.dispatchEvent(Component.java:3803)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at
java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at
java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at
java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at java.awt.Container.dispatchEventImpl(Container.java:2010)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at java.awt.Window.dispatchEventImpl(Window.java:1774)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at java.awt.Component.dispatchEvent(Component.java:3803)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at
java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:153)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at java.awt.Dialog$1.run(Dialog.java:517)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at java.awt.Dialog$2.run(Dialog.java:545)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at java.security.AccessController.doPrivileged(Native
Method)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at java.awt.Dialog.show(Dialog.java:543)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at java.awt.Component.show(Component.java:1300)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at java.awt.Component.setVisible(Component.java:1253)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at
org.epistasis.eva.gui.JDialogLogin.Login(JDialogLogin.java:157)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at org.epistasis.eva.gui.FrameMain$1.run(FrameMain.java:502)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at
java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at java.awt.EventQueue.dispatchEvent(EventQueue.java:461)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at
java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at
java.awt.EventDispatchThread.run(EventDispatchThread.java:110)<br>
Caused by: java.lang.NullPointerException<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at
com.mysql.jdbc.StringUtils.indexOfIgnoreCaseRespectQuotes(StringUtils.java:959)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at
com.mysql.jdbc.DatabaseMetaData.getCallStmtParameterTypes(DatabaseMetaData.java:1296)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at
com.mysql.jdbc.DatabaseMetaData.getProcedureColumns(DatabaseMetaData.java:3670)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at
com.mysql.jdbc.CallableStatement.determineParameterTypes(CallableStatement.java:702)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at
com.mysql.jdbc.CallableStatement.&lt;init&gt;(CallableStatement.java:513)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at
com.mysql.jdbc.Connection.parseCallableStatement(Connection.java:4422)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at com.mysql.jdbc.Connection.prepareCall(Connection.java:4496)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at com.mysql.jdbc.Connection.prepareCall(Connection.java:4470)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at
org.apache.commons.dbcp.DelegatingConnection.prepareCall(DelegatingConnection.java:212)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at
org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.prepareCall(PoolingDataSource.java:268)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at
com.ibatis.sqlmap.engine.execution.SqlExecutor.prepareCall(SqlExecutor.java:498)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at
com.ibatis.sqlmap.engine.execution.SqlExecutor.executeQueryProcedure(SqlExecutor.java:260)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at
com.ibatis.sqlmap.engine.mapping.statement.ProcedureStatement.sqlExecuteQuery(ProcedureStatement.java:34)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at
com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryWithCallback(GeneralStatement.java:173)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ... 49 more<br>
<br>
<br>
Brandon Goodin wrote:
<blockquote
 cite="mid2fe5ef5b0611160621k39ec2bffhc948533a2d70a3a2@mail.gmail.com"
 type="cite">
  <meta http-equiv="Context-Type"
 content="text/html; charset=ISO-8859-1">
&gt;From what i can see of your code you are trying to use iBATIS in
more of an Active Record fashion. With iBATIS it is not a good idea to
make database calls from within your domain beans. As a general
practice, it is best to operate on your domain beans externally either
by providing information to the bean at instantiation(not supported in
iBATIS) or via a getter/setter (supported). An enhanced route to go for
using the setter is to setup a resultMap that can populate a complex
type. This would essentially be using the setter. Since you expose your
setter and getter. I would recommend that you use a result map. <br>
  <br>
As a side note I noticed you were using &lt;statement&gt; for all of
your mapped statements... there are others available as well
&lt;procedure&gt;, &lt;select&gt;, &lt;insert&gt;, &lt;update&gt;,
&lt;delete&gt;. There are variations between them that provide more
focused control over the type of database call and return type.
  <br>
  <br>
Hope that helps,<br>
Brandon Goodin<br>
  <br>
  <div><span>On 11/15/06, <b>Peter Andrews</b> &lt;<a
 href="mailto:peter.andrews@dartmouth.edu">peter.andrews@dartmouth.edu</a>&gt;
wrote:
  </span>
  <blockquote>
    <div>I am sorry but I don't have the time to distill everything to
a nice
example. My guess is that it easy to replicate by following my
essential (possibly poor) technique which is that the setter for one of
my resultClass properties makes another call to the db via iBATIS (see
the setGeneKey method in GeneExperimentResult.java).<br>
    <br>
As I read more about iBATIS, I realize the more conventional way to
accomplish what I want is to use a resultMap with Complex Properties
such that a returned foreignKey to another class retrieves that class.
I did not do so because I think it is more complicated, particularly
given that I am not using any resultMaps since my column names and bean
names match exactly.
    <div><span><br>
    <br>
Brandon Goodin wrote:
    <blockquote
 cite="http://mid2fe5ef5b0611141002n59ffbf78o487a42663c3fdc93@mail.gmail.com"
 type="cite">Please post your code involved in producing this. Post
sqlmap config, dao java code, and bean java code.<br>
      <br>
Brandon<br>
      <br>
      <div><span>On 11/14/06, <b>Peter Andrews</b> &lt;<a
 href="mailto:peter.andrews@dartmouth.edu">
peter.andrews@dartmouth.edu</a>&gt; wrote:</span>
      <blockquote>I
am sorry if this has been discussed previously -- the mail archives <br>
seem to be currently unavailable (get network connection error).<br>
        <br>
I am getting an error. The error message is different between 2.2.0 and<br>
the subversion latest. The error in the subject line is from the<br>
subversion code. In the 2.2.0 I get:<br>
        <br>
com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Result consisted of<br>
more than one row<br>
        <br>
When the message says 'This is likely a bug' does it mean a bug in<br>
iBATIS or a bug in my code? I think it means iBATIS. <br>
        <br>
At the bottom of this email is a partial stack trace (the full trace<br>
goes on for a very long time repeating itself and ends with&nbsp;&nbsp;'...30
more').<br>
        <br>
I think the issue is that one of my calls into iBATIS can cause <br>
additional calls to occur before the first one ends. This is because<br>
some of my setter functions also make calls to the db.<br>
        <br>
The iBATIS code that is throwing the exception is in SessionScope.java:<br>
&nbsp;&nbsp;public void putPreparedStatement(String sql, PreparedStatement ps) { <br>
&nbsp;&nbsp;&nbsp;&nbsp;if (!isInBatch()) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (hasPreparedStatementFor(sql))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throw new
SqlMapException("Duplicate prepared statement found.<br>
This is likely a bug.");<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;preparedStatements.put(sql, ps);
<br>
&nbsp;&nbsp;&nbsp;&nbsp;}<br>
&nbsp;&nbsp;}<br>
        <br>
Changing the iBATIS code to:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!hasPreparedStatementFor(sql))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;preparedStatements.put(sql,
ps);<br>
        <br>
appears to fix the problem. I am an iBATIS novice user so is likely not<br>
a correct fix (if the problem is even iBATIS').<br>
        <br>
        <br>
Here is the stack trace:<br>
run-single:<br>
DEBUG: iBATIS SqlMap for db 'GeneDataset' initialized<br>
DEBUG: queryForObject 'getResearcherByUsername' passing: PeterVermont <br>
DEBUG: queryForObject 'getResearcherByUsername' returning:<br>
org.epistasis.db.geneExperiment.Researcher[id=1]<br>
DEBUG: queryForList 'getGeneExperimentResultsByDatasetExperimentId'<br>
passing: 1&nbsp;&nbsp; &lt;==*********************NOTE: Still in process when
when <br>
following calls start<br>
DEBUG: queryForObject 'getGeneKeyById' passing: 1<br>
DEBUG: queryForObject 'getGeneKeyById' returning:<br>
org.epistasis.db.geneExperiment.GeneKey[id=1]<br>
DEBUG: queryForObject 'getGeneKeyById' passing: <br>
2<br>
&lt;==*********************NOTE: second call to getGeneKeyById since<br>
        <br>
        <br>
        <br>
'getGeneExperimentResultsByDatasetExperimentId' started<br>
com.ibatis.common.jdbc.exception.NestedSQLException:<br>
--- The error occurred in org/epistasis/db/geneDataset/GeneDataset.xml.
        <br>
--- The error occurred while executing query.<br>
--- Check the&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CALL getGeneKeyById(?)&nbsp;&nbsp;
.<br>
--- Check the SQL Statement (preparation failed).<br>
--- Cause: com.ibatis.sqlmap.client.SqlMapException: Duplicate prepared
        <br>
statement found.&nbsp;&nbsp;This is likely a bug.<br>
Caused by: com.ibatis.sqlmap.client.SqlMapException: Duplicate prepared<br>
statement found.&nbsp;&nbsp;This is likely a bug.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at<br>
com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryWithCallback
(GeneralStatement.java:188)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at<br>
com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryForObject(GeneralStatement.java:104)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at<br>
com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForObject
(SqlMapExecutorDelegate.java:566)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at<br>
com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForObject(SqlMapExecutorDelegate.java:541)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at<br>
com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForObject
(SqlMapSessionImpl.java:106)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at<br>
com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.queryForObject(SqlMapClientImpl.java:83)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at<br>
org.epistasis.db.SqlMapClientWrapper.queryForObject(SqlMapClientWrapper.java
:21)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at<br>
org.epistasis.db.geneDataset.GeneDatasetDbAccess.getGeneKeyById(GeneDatasetDbAccess.java:94)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at<br>
org.epistasis.db.geneDataset.GeneKey.getGeneKeyById(GeneKey.java:49)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at<br>
org.epistasis.db.geneDataset.GeneExperimentResult.setGeneKeyId
(GeneExperimentResult.java:110)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
Method)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at<br>
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at<br>
sun.reflect.DelegatingMethodAccessorImpl.invoke
(DelegatingMethodAccessorImpl.java:25)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at java.lang.reflect.Method.invoke(Method.java:585)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at<br>
com.ibatis.sqlmap.engine.accessplan.PropertyAccessPlan.setProperties(PropertyAccessPlan.java:46)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at <br>
com.ibatis.sqlmap.engine.exchange.JavaBeanDataExchange.setData(JavaBeanDataExchange.java:115)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at<br>
com.ibatis.sqlmap.engine.mapping.result.BasicResultMap.setResultObjectValues(BasicResultMap.java:373)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at <br>
com.ibatis.sqlmap.engine.mapping.statement.RowHandlerCallback.handleResultObject(RowHandlerCallback.java:64)<br>
ERROR: Caught an exception<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at<br>
com.ibatis.sqlmap.engine.execution.SqlExecutor.handleResults(
SqlExecutor.java:377)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at<br>
com.ibatis.sqlmap.engine.execution.SqlExecutor.handleMultipleResults(SqlExecutor.java:296)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at<br>
com.ibatis.sqlmap.engine.execution.SqlExecutor.executeQuery(SqlExecutor.java
:187)<br>
com.ibatis.common.jdbc.exception.RuntimeSQLException:<br>
com.ibatis.common.jdbc.exception.NestedSQLException:<br>
--- The error occurred in org/epistasis/db/geneDataset/GeneDataset.xml.<br>
--- The error occurred while applying a result map. <br>
--- Check the
getGeneExperimentResultsByDatasetExperimentId-AutoResultMap.<br>
--- The error happened while setting a property on the result object.<br>
--- Cause: java.lang.RuntimeException: Error setting property<br>
'setGeneKeyId' of <br>
'org.epistasis.db.geneExperiment.GeneExperimentResult[id=2]'.&nbsp;&nbsp;Cause:<br>
com.ibatis.common.jdbc.exception.RuntimeSQLException:<br>
com.ibatis.common.jdbc.exception.NestedSQLException:<br>
--- The error occurred in org/epistasis/db/geneDataset/GeneDataset.xml.
        <br>
--- The error occurred while executing query.<br>
--- Check the&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CALL getGeneKeyById(?)&nbsp;&nbsp;
.<br>
--- Check the SQL Statement (preparation failed).<br>
--- Cause: com.ibatis.sqlmap.client.SqlMapException: Duplicate prepared
        <br>
statement found.&nbsp;&nbsp;This is likely a bug.<br>
Caused by: com.ibatis.sqlmap.client.SqlMapException: Duplicate prepared<br>
statement found.&nbsp;&nbsp;This is likely a bug.<br>
Caused by: java.lang.RuntimeException: Error setting property <br>
'setGeneKeyId' of<br>
'org.epistasis.db.geneExperiment.GeneExperimentResult[id=2]'.&nbsp;&nbsp;Cause:<br>
com.ibatis.common.jdbc.exception.RuntimeSQLException:<br>
com.ibatis.common.jdbc.exception.NestedSQLException:<br>
--- The error occurred in org/epistasis/db/geneDataset/GeneDataset.xml.
        <br>
--- The error occurred while executing query.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at<br>
com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.sqlExecuteQuery(GeneralStatement.java:205)<br>
--- Check the&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CALL getGeneKeyById(?)&nbsp;&nbsp;
.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at<br>
com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryWithCallback(GeneralStatement.java:173)<br>
--- Check the SQL Statement (preparation failed).<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at<br>
com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryForList
(GeneralStatement.java:123)<br>
--- Cause: com.ibatis.sqlmap.client.SqlMapException: Duplicate prepared<br>
statement found.&nbsp;&nbsp;This is likely a bug.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at<br>
com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList
(SqlMapExecutorDelegate.java:615)<br>
Caused by: com.ibatis.sqlmap.client.SqlMapException: Duplicate prepared<br>
statement found.&nbsp;&nbsp;This is likely a bug.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at<br>
com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList
(SqlMapExecutorDelegate.java:589)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at<br>
com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForList(SqlMapSessionImpl.java:118)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at<br>
org.epistasis.db.SqlMapClientWrapper.queryForList(SqlMapClientWrapper.java
:50)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at<br>
com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.queryForList(SqlMapClientImpl.java:95)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at<br>
org.epistasis.db.geneDataset.GeneDatasetDbAccess.getGeneExperimentResultsByDatasetExperimentId(GeneDatasetDbAccess.java
:90)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at<br>
org.epistasis.db.SqlMapClientWrapper.queryForList(SqlMapClientWrapper.java:45)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at<br>
org.epistasis.db.geneDataset.GeneDatasetDbAccess.main(GeneDatasetDbAccess.java:167)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at<br>
org.epistasis.db.geneDataset.GeneDatasetDbAccess.getGeneExperimentResultsByDatasetExperimentId
(GeneDatasetDbAccess.java:90)<br>
Caused by: com.ibatis.common.jdbc.exception.NestedSQLException:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at<br>
org.epistasis.db.geneDataset.GeneDatasetDbAccess.main(GeneDatasetDbAccess.java:167)<br>
--- The error occurred in org/epistasis/db/geneDataset/GeneDataset.xml.
        <br>
Caused by: com.ibatis.sqlmap.client.SqlMapException: Duplicate prepared<br>
statement found.&nbsp;&nbsp;This is likely a bug.<br>
--- The error occurred while applying a result map.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at<br>
com.ibatis.sqlmap.engine.scope.SessionScope.putPreparedStatement
(SessionScope.java:247)<br>
--- Check the
getGeneExperimentResultsByDatasetExperimentId-AutoResultMap.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at<br>
com.ibatis.sqlmap.engine.execution.SqlExecutor.prepareStatement(SqlExecutor.java:488)<br>
--- The error happened while setting a property on the result object. <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at<br>
com.ibatis.sqlmap.engine.execution.SqlExecutor.executeQuery(SqlExecutor.java:173)<br>
--- Cause: java.lang.RuntimeException: Error setting property<br>
'setGeneKeyId' of<br>
'org.epistasis.db.geneExperiment.GeneExperimentResult
[id=2]'.&nbsp;&nbsp;Cause:<br>
com.ibatis.common.jdbc.exception.RuntimeSQLException:<br>
com.ibatis.common.jdbc.exception.NestedSQLException:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at<br>
com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.sqlExecuteQuery
(GeneralStatement.java:205)<br>
--- The error occurred in org/epistasis/db/geneDataset/GeneDataset.xml.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at<br>
com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryWithCallback(GeneralStatement.java
:173)<br>
--- The error occurred while executing query.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;... 30 more<br>
        <br>
--<br>
Peter Andrews<br>
Software Engineer<br>
Dartmouth Medical School<br>
Computational Genetics<br>
Rubin 707<br>
(603) 653-3598<br>
        <a href="mailto:Peter.Andrews@dartmouth.edu">Peter.Andrews@dartmouth.edu</a><br>
        <br>
      </blockquote>
      </div>
      <br>
    </blockquote>
    <br>
    </span></div>
    <pre>-- 
Peter Andrews
Software Engineer
Dartmouth Medical School
Computational Genetics
Rubin 707
(603) 653-3598
<a href="mailto:Peter.Andrews@dartmouth.edu">
Peter.Andrews@dartmouth.edu</a>
    </pre>
    </div>
    <br>
  </blockquote>
  </div>
  <br>
</blockquote>
<br>
<pre class="moz-signature" cols="72">-- 
Peter Andrews
Software Engineer
Dartmouth Medical School
Computational Genetics
Rubin 707
(603) 653-3598
<a class="moz-txt-link-abbreviated" href="mailto:Peter.Andrews@dartmouth.edu">Peter.Andrews@dartmouth.edu</a>
</pre>
</body>
</html>

Mime
View raw message