Try this as the <selectKey> query. I think you have to select the column as
"value". I'm assuming your "deployment" class has a "deploymentId"
property.
<selectKey resultClass="int" keyProperty="deploymentId">
SELECT @@IDENTITY AS value
</selectKey>
Zarar
----- Original Message -----
From: <[EMAIL PROTECTED]>
To: <user-java@ibatis.apache.org>
Sent: Thursday, October 06, 2005 9:00 PM
Subject: Sybase selectKey problem
#1 -- I'm trying to use selectKey to create keys for me. DB is Sybase.
My insert is as follows:
<insert id="createDeployment" parameterClass="deployment">
INSERT INTO Deployment (environmentId, deploymentTypeId, userName,
deploymentStatusId, deploymentTime, threadCountOverride)
VALUES (#environmentId#, #deploymentTypeId#, #userName#,
#deploymentStatusId#, #deploymentTime#,
#threadCountOverride#) <selectKey resultClass="int"
keyProperty="deploymentId">
SELECT @@IDENTITY AS deploymentId
</selectKey>
</insert>
(BTW the dev guide does not mention keyProperty -- I found that in this
thread:
http://www.mail-archive.com/user-java@ibatis.apache.org/msg00044.html)
I get the following error:
Caused by: com.sybase.jdbc3.jdbc.SybSQLException: The column deploymentId
in table Deployment does not allow null values.
at
com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeUpdate(GeneralStatement.java:91)
at
com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.insert(SqlMapExecutorDelegate.java:442)
at
com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.insert(SqlMapSessionImpl.java:81)
at
org.springframework.orm.ibatis.SqlMapClientTemplate$9.doInSqlMapClient(SqlMapClientTemplate.java:319)
at
org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemplate.java:181)
at
org.springframework.orm.ibatis.SqlMapClientTemplate.insert(SqlMapClientTemplate.java:317)
#2 -- Given that the insert/update statements are very much alike, is
there a clean way to share the SQL between the two?
Thanks
Reuben