On Mar 22, 2007, at 1:40 AM, Abdullah Kauchali wrote:

Avoid using @@Identity and instead use Scope_Identity().

Here is a blogg that summarises the point:

http://cf-bill.blogspot.com/2005/08/identity-scopeidentity- identcurrent.html

Has links to MSDN for details.

I've got my code working now, but only with @@IDENTITY, not with SCOPE_IDENTITY().

If I have this inside a table element in my AbatorConfig.xml ...

   <generatedKey column="id" sqlStatement="SqlServer" identity="true"/>

then it generates this in my mapping file ...

<insert id="abatorgenerated_insert" parameterClass="com.savealot.xademo.model.Address" >
    insert into GWT_Test..address (street, city, state, zip)
values (#street:VARCHAR#, #city:VARCHAR#, #state:VARCHAR#, #zip:INTEGER#)
    <selectKey resultClass="java.lang.Integer" keyProperty="id" >
      SELECT SCOPE_IDENTITY()
    </selectKey>
  </insert>

and when I run I get ...

java.lang.NullPointerException
        com.savealot.client.SpringDAOClient.addAddress(SpringDAOClient.java:56)
        com.savealot.client.SpringDAOClient.loadDB(SpringDAOClient.java:84)

However, if change the generateKey element to this ...

<generatedKey column="id" sqlStatement="SELECT @@IDENTITY AS ID" identity="true"/>

then it generates this in my mapping file ...

<insert id="abatorgenerated_insert" parameterClass="com.savealot.xademo.model.Address" >
    insert into GWT_Test..address (street, city, state, zip)
values (#street:VARCHAR#, #city:VARCHAR#, #state:VARCHAR#, #zip:INTEGER#)
    <selectKey resultClass="java.lang.Integer" keyProperty="id" >
      SELECT @@IDENTITY AS ID
    </selectKey>
  </insert>

where the only difference is the SELECT statement, and everything works fine.

Any idea why I can't get SCOPE_IDENTITY() to work? Perhaps something I'm doing wrong defining the table?

-----Original Message-----
From: Niels Beekman [mailto:[EMAIL PROTECTED]
Sent: Wednesday, March 21, 2007 10:19 PM
To: [email protected]
Subject: FW: SQL Server JDBC drivers

And for the archives...

-----Original Message-----
From: Niels Beekman
Sent: woensdag 21 maart 2007 20:33
To: 'Mark Volkmann'
Subject: RE: SQL Server JDBC drivers

Sure:

<insert id="Example_insert" parameterClass="Example">
  INSERT INTO example (example_column)
  VALUES (#exampleColumn#)
  <selectKey keyProperty="exampleId" resultClass="int">
    SELECT @@IDENTITY AS ID
  </selectKey>
</insert>

iBATIS will then populate the property "exampleId" with the value of
the
auto-incremented column.

HTH,

Niels

-----Original Message-----
From: Mark Volkmann [mailto:[EMAIL PROTECTED]
Sent: woensdag 21 maart 2007 20:28
To: Niels Beekman; Graeme J Sweeney; Rose, Greg
Cc: Dan Berghoff
Subject: Re: SQL Server JDBC drivers

Thanks to the three of you for replying!

We're having trouble getting iBATIS to work with tables that have an
integer primary key that is auto-incremented. If you have done that,
can you send me the relevant snippet of XML from one of your {name}
_SqlMap.xml files?

Thanks!

On Mar 21, 2007, at 11:36 AM, Niels Beekman wrote:

Hi,

We use jTDS (http://jtds.sf.net) for several years now, it has
excellent
performance and any bugs (which are very rare) are dealt with
promptly.

Niels

-----Original Message-----
From: Mark Volkmann [mailto:[EMAIL PROTECTED]
Sent: woensdag 21 maart 2007 17:28
To: [email protected]
Subject: SQL Server JDBC drivers

If you have successfully used iBATIS with SQL Server, can you tell me
what JDBC driver(s) have worked for you?


Reply via email to