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






 
 
 

    

  

Reply via email to