Thanks again, finally is working!!! Larry Meadors wrote: <transactionManager type="JDBC" commitRequired="true"> On 8/25/05, Eduardo Lobo <[EMAIL PROTECTED]> wrote:Thanks for the answer, This is the SQL config that I'm using: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE sqlMapConfig PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN" "http://www.ibatis.com/dtd/sql-map-config-2.dtd"> <sqlMapConfig> <settings cacheModelsEnabled="false" enhancementEnabled="true" lazyLoadingEnabled="true" maxRequests="32" maxSessions="10" maxTransactions="5" useStatementNamespaces="false"/> <transactionManager type="JDBC" commitRequired="true" > <dataSource type="SIMPLE"> <property name="JDBC.Driver" value="net.sourceforge.jtds.jdbc.Driver"/> <property name="JDBC.ConnectionURL" value="jdbc:jtds:sqlserver://192.168.1.20:1433/Database"/> <property name="JDBC.Username" value="user"/> <property name="JDBC.Password" value="*****"/> <property name="JDBC.DefaultAutoCommit" value="true"/> </dataSource> </transactionManager> <sqlMap resource="Person.xml"/> </sqlMapConfig> Could you tell me, please, what I need to change to make this work?Larry Meadors wrote: The transaction's being rolled back, it looks like. Change your transaction manager to commitRequired="true" and i think it will work. On a related note..you do know that you can do all of that without a stored proc, right? <insert ...> insert Person (Name) values (#name#) <selectKey property="id"> select SCOPE_IDENTITY() </selectKey> </insert> Insert the record, set the id property to the generated key. Done. :-) Larry On 8/25/05, Eduardo Lobo <[EMAIL PROTECTED]> wrote: Hi, My problem is this: I create this SP(in SQL Server 2000): create procedure create_person @name varchar(80) as begin declare @id int insert Person (Name) values (@name) Set @id = SCOPE_IDENTITY() select Id, Name from Person where Id = @id end GO This is the XML Map: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://www.ibatis.com/dtd/sql-map-2.dtd"> <sqlMap namespace="Person"> <!-- ///////////////Type Aliases/////////////// --> <typeAlias alias="Map" type="java.util.Map"/> <typeAlias alias="Person" type="Person"/> <!-- ///////////////Type Aliases/////////////// --> <!-- ///////////////Result Maps/////////////// --> <resultMap id="Person_Result" class="Person"> <result property="id" column="Id"/> <result property="name" column="Name"/> </resultMap> <!-- ///////////////Result Maps/////////////// --> <!-- ///////////////Procedues/////////////// --> <procedure id="create_person" resultMap="Person_Result" parameterClass="Map"> {call create_person (#name#)} </procedure> <!-- ///////////////Procedues/////////////// --> </sqlMap> This is the java code: SqlMapClient sqlMap = null; try { String file = "SQLConfigMap.xml"; Reader reader = Resources.getResourceAsReader(file); sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader); HashMap params = new HashMap(); params.put("name", "David"); Object obj = sqlMap.queryForObject("create_person", params); System.out.println("create_person: " + obj); } catch (Exception e) { System.out.println(e.getMessage()); } Results: Finally when I print the result I got the new Record info, Person: id = 1, name = David That's fine, but when I check the Table there's not record... But the strange is that it returns the mapped object with the new data, like if it was successfully inserted. The "Id" field from the table Person is Identity (automatic sequential), and if I try to insert the record again then a I get the next "Id" (Person: id = 2, name = David), but again nothing is in the table.. Thanks for the help. Eduardo Lobo |
- Re: Strange Problem.. Eduardo Lobo
- Re: Strange Problem.. Prashanth Sukumaran