after using SqlMapClient.getCurrentConnection() and doing the insert via native 
JDBC on this connection I received a SQLException that led me finally in the 
right direction (there was a problem with a constraint which I was not aware 
of).
I just wonder why iBatis completely catched this exception and did not return 
any error that I was able to catch.

I would be tempted to say that I should have used the <statement> element 
instead of the <insert> element (as I have seen different behaviour regarding 
errors when using <statement> instead of the more specialized elements), but I 
need the nested <selectKey> element which is not available inside <statement>.

Is there an explanation for this behaviour?
Or should I have done something different?

Thanks a lot for the insight

-------- Original-Nachricht --------
Datum: Wed, 21 Jun 2006 08:46:01 +0200
Von: Torsten Michelmann <[EMAIL PROTECTED]>
An: [email protected], [EMAIL PROTECTED]
Betreff: Re: RE: Data not commited to DB2

> Hi Christian,
> 
> you are right that the line should be in the try-catch. This is just a
> leftover from my various debugging attempts. This is also true for the
> commented endTransaction() call.
> 
> Talking about the configuration problem:
> Do you have an idea what kind of iBatis configuration parameter I could be
> missing?
> Because if I do the same thing with pure JDBC it is working.
> 
> Thank you for your comments.
> 
> 
> -------- Original-Nachricht --------
> Datum: Tue, 20 Jun 2006 14:19:20 -0400
> Von: Poitras Christian <[EMAIL PROTECTED]>
> An: [email protected]
> Betreff: RE: Data not commited to DB2
> 
> > I believe that your code line
> >   Integer
> >
> moKey2=(Integer)myConnection.insert("createCustomerOrderBase_MenuOrder",cok);
> >         log.debug("createCustomerOrderBase_MenuOrder: created entry with id
> > "+moKey2);
> > should be in the try catch block with other inserts.
> > If the other inserts does not work, then you might have the problem your
> > are talking about.
> > 
> > Also take note that code line
> > myConnection.endTransaction();
> > must not be commented.
> > 
> > Hope that helps.
> > Christian
> > 
> > -----Original Message-----
> > From: Torsten Michelmann [mailto:[EMAIL PROTECTED] 
> > Sent: Tuesday, 20 June 2006 10:15
> > To: [email protected]
> > Subject: Data not commited to DB2
> > 
> > Hi,
> > 
> > I have a problem with insert statements on DB2 8.1 using the current
> > iBatis release.
> > The problem is that they are executed without error but when I query the
> > DB I don't see any of the entries.
> > 
> > I strongly assume that it is a configuration problem, but I have spend a
> > couple of hours staring at the configuration and cross-checking with the
> DTD
> > without success.
> > 
> > What is particulary irritating to me is the fact that the call outside
> the
> > transaction was persisted ONCE to the database, all further calls to the
> > method did not yield any change on the table.
> > The auto generated keys are incremented and iBatis returns the generated
> > id's (proven by the debug statements inside my DAO code) but I just
> can't
> > find them on the table.
> > 
> > Your help is highly appreciated.
> > 
> > ***my personal DAO***
> > public class MomDAO extends BaseDAO {
> >     Logger log=Logger.getLogger(MomDAO.class);
> >     public SqlMapClient getSqlMapClient() {
> >         SQLMapConfigMOM t = new SQLMapConfigMOM();
> >         return t.getSqlMapInstance();
> >     }
> > 
> >     public CustomerOrder createCustomerOrder(final CustomerOrderKey cok)
> > throws SQLException {
> >         SqlMapClient myConnection=getSqlMapClient();
> >         Integer
> >
> moKey2=(Integer)myConnection.insert("createCustomerOrderBase_MenuOrder",cok);
> >         log.debug("createCustomerOrderBase_MenuOrder: created entry with id
> > "+moKey2);
> >         try {
> >             myConnection.startTransaction();
> >                 //Step 1.1
> >                 Integer
> >
> moKey=(Integer)myConnection.insert("createCustomerOrderBase_MenuOrder",cok);
> >                 log.debug("createCustomerOrderBase_MenuOrder: created entry 
> > with
> id
> > "+moKey);
> >                 int newKey=moKey.intValue();
> >                 //Step 2
> >                 Object
> >
> custOrderId=myConnection.insert("createCustomerOrderBase_CustomerOrder",cok);
> >                 log.debug("createCustomerOrderBase_CustomerOrder: created 
> > entry
> with
> > id "+(Integer)custOrderId);
> >         myConnection.commitTransaction();
> >         }
> >         finally  
> >         {
> > //            myConnection.endTransaction();
> >         }
> >         
> >         CustomerOrder co=new CustomerOrder();
> >         //TODO: load and return complete Customer Order
> >         return co;
> >     }
> > }
> > 
> > 
> > ***SQLMapConfig.xml***
> > 
> > <?xml version="1.0" encoding="UTF-8" ?>
> > <!DOCTYPE sqlMapConfig     
> > PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"      
> > "http://ibatis.apache.org/dtd/sql-map-config-2.dtd";>
> > <!-- Always ensure to use the correct XML header as above! -->
> > <sqlMapConfig>
> >     <settings 
> >             cacheModelsEnabled="false" 
> >             enhancementEnabled="true" 
> >             errorTracingEnabled="true"
> >             lazyLoadingEnabled="true" 
> >             maxRequests="32"
> >             maxSessions="10" 
> >             maxTransactions="5" 
> >             useStatementNamespaces="false" 
> >             />
> >     <transactionManager type="JDBC" commitRequired="true">
> > 
> >             <dataSource type="SIMPLE">
> >                     <property name="JDBC.Driver" value="${driver}" />
> >                     <property name="JDBC.ConnectionURL" value="${url}" />
> >                     <property name="JDBC.Username" value="${username}" />
> >                     <property name="JDBC.Password" value="${password}" />
> >             </dataSource>
> >     <sqlMap resource="SqlMap.xml" />
> > </sqlMapConfig>
> > 
> > 
> > ***sqlMap.xml***
> > <?xml version="1.0" encoding="UTF-8" ?>
> > <!DOCTYPE sqlMap      PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
>  
> >    "http://ibatis.apache.org/dtd/sql-map-2.dtd";>
> > <sqlMap namespace="myNamespace">
> >     <insert id="createCustomerOrderBase_MenuOrder"
> > parameterClass="CustomerOrderKey">
> >             <![CDATA[
> >                     INSERT INTO MENU.MENUORDER 
> >                     ( SEGMENT, SAISON, MODULE_ID,IS_MOM,VERSION) 
> >                     VALUES (#collectionKey.segmentId#, 
> > #collectionKey.seasonId#,
> > #moduleKey.moduleId#,0,1);
> >             ]]>
> >             <selectKey keyProperty="objectId" 
> > resultClass="java.lang.Integer" >
> >                     <include refid="getGeneratedKey"/>
> >             </selectKey>
> >     </insert>
> >     <insert id="createCustomerOrderBase_CustomerOrder"
> > parameterClass="CustomerOrderKey">
> >             <![CDATA[
> >                     INSERT INTO MENU.CUSTOMERORDER
> >                     ( MENUORDER_ID, CUSTOMER_ID, ORDERID) 
> >                     VALUES (#objectId#, #customerId#, #orderId#);           
> >         
> >             ]]>
> >             <selectKey keyProperty="objectId" 
> > resultClass="java.lang.Integer" >
> >                     <include refid="getGeneratedKey"/>
> >             </selectKey>
> >     </insert>       
> >     
> > </sqlMap>
> > 
> > 
> > 
> > 
> > --
> > Greetings
> > Torsten
> > 
> > Echte DSL-Flatrate dauerhaft für 0,- Euro*!
> > "Feel free" mit GMX DSL! http://www.gmx.net/de/go/dsl
> 
> -- 
> Gruß
> Torsten Michelmann
> 
> Der GMX SmartSurfer hilft bis zu 70% Ihrer Onlinekosten zu sparen!
> Ideal für Modem und ISDN: http://www.gmx.net/de/go/smartsurfer

-- 


"Feel free" – 10 GB Mailbox, 100 FreeSMS/Monat ...
Jetzt GMX TopMail testen: http://www.gmx.net/de/go/topmail

Reply via email to