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