It does not return an object, rather your code passes
MSCPerfCntrTrunkTblImpl by reference to the insert() method.  This
method invokes the setter for the field that matches the keyProperty
name (likely by reflection) and sets the field directly. So, when you
return from the insert() method, your object has been updated directly.
At least this is how I use it.
 
The insert() method can return an object, which is the primary key of
the newly inserted row.
 
-Kevin
 
PS: "Burke" is my surname.


        -----Original Message-----
        From: Rahul Saluja [mailto:[email protected]] 
        Sent: February 12, 2009 12:57 PM
        To: [email protected]
        Subject: RE: What does Insert method return
        
        

        Hey Bruke,

         

        Well I do have sequences defined for my each table which acts as
a primary key for my table now I want to use this generatedkey as a
foreign key in another table so now if I use my class attribute to have
this sequence id , then how can I get that key in java code , I am
assuming I can do in following manner please tell me if I a, doing in a
right way or not (my DB is Postgres).

         

        <insert id="MSCPerfCntrTrunkTblImpl"

        
parameterClass="com.hns.hss.nmf.server.log.manager.gensrc.MSCPerformance
.impl.MSCPerfCntrTrunkTblImpl">

              

              <selectKey keyProperty="generatedSequenceId_0"
resultClass="int">

              SELECT nextval('MSCPerfCntrTrunk_seq')

            </selectKey>

              insert into MSCPerfCntrTrunkTbl(

              

        seq_no,

              neinfo_id,

              rectimeStamp,

              transactionId,

              destNum_2,

              

              )

        values

              (

              #generatedSequenceId_0#, 

              #neInfoId_0#,

              #timeStamp_0#,

              #transactionId_1.value#,

              #count_2.value#,

              

              )

              

         

        And in my  java code  if I am writing following statements

         

        
SqlMapClient.insert("MSCPerfCntrTrunkTblImpl",ObjectpointingtoMSCPerfCnt
rTrunkTblImpl)

         

        Above statement will return an Object but an object of what
type??.

         

        Looking forward to your response.

         

        Regards

        Rahul Saluja

         

        
  _____  


        From: Burke.Kevin [mailto:[email protected]] 
        Sent: Thursday, February 12, 2009 11:25 PM
        To: [email protected]
        Subject: RE: What does Insert method return

         

        I believe that your parameterMap (or parameterClass) object as
defined in the parameterClass attribute of the <insert> statement in
your sqlMap file, will have the attribute that matched the keyProperty
set, so when the insert() method returns, in your example below,
newRecord will have the matching attribute set by the iBatis call.  If
"newRecord" has an attribute called generatedSequenceId_0, and you
specify this as your keyProperty value (i.e. <selectKey
resultClass="int" keyProperty="generatedSequenceId_0">), then the setter
is called on the parameterClass when the keyProperty is derived.

         

        Does this answer your question?

         

        -Kevin

         

         

        -----Original Message-----
        From: Rahul Saluja [mailto:[email protected]] 
        Sent: February 12, 2009 11:23 AM
        To: [email protected]
        Subject: RE: What does Insert method return

                Hi Sundar and Larry,

                 

                Really appreciate you taking out time and replying but
my question still stands unanswered .

                 

                My question is the select key returns the generated
sequence number in case of insert (that I know) ,so if I use the
parameters class field as value to keyProperty attribute will that be
set to in my parameters class's particular field i.e in my case
generatedSequenceId_0 or will it be returned simply as an Integer object
so in my code do I need to first call the getter method for
generatedSequenceId_0 and then call type cast back to Integer Object and
then call.intvalue on that object or what....... All I want is generated
sequence to be available in java code.

                 

                sqlMap.startTransaction();

                Object o = sqlMap.insert(a, newRecord);

                Myobject mo = (MyObject)0;                

                Mo.getgeneratedSequenceId_0().intvalue();

                sqlMap.startBatch();

                 

                Plsss help me I am confused.

                 

                 

                Eagerly Looking forward to response.

                 

                Regards

                Rahul Saluja

                 

                 

                 

                 

                
  _____  


                From: Sundar Sankar [mailto:[email protected]] 
                Sent: Thursday, February 12, 2009 9:42 PM
                To: [email protected]
                Subject: Re: What does Insert method return

                 

                Hi Rahul
                check this website out
http://ibatis.apache.org/docs/java/user/com/ibatis/sqlmap/client/SqlMapC
lient.html.
                It seems to say that it will return the number of rows
inserted. 
                
                Though I understand you have no test bed but I would
still suggest you some how test it with a rollback enabled and see if
the actual object or any other variety results do come back. I am not
sure if you have spring in you app, But if you do, enabling a unit test
is a piece of cake in Spring 2.5 +
                
                -Sundar

                On Thu, Feb 12, 2009 at 8:25 AM, Rahul Saluja
<[email protected]> wrote:

                Hello Everyone,

                 

                Can anyone tell me what exactly does sqlmapclient.insert
method return I know it returns an object but does it returns the object
of selectkey means say in following example

                 

                <selectKey keyProperty="generatedSequenceId_0"
resultClass="int">

                      SELECT currval('MSCPerfCntrTrunk_seq')

                    </selectKey>

                 

                Does it return an Integer Object containing an sequence
value generated by my insert statement 

                or 

                 

                does it return the actual Object which was just inserted
with the  generatedSequenceId_0 field assigned the generated sequence
number.

                 

                 

                Eagerly Looking forward to your response.

                 

                Regards

                Rahul Saluja 

                The information contained in this e-mail is private &
confidential and may also be legally privileged. If you are not the
intended recipient, please notify us, preferably by e-mail, and do not
read, copy or disclose the contents of this message to anyone.

                 

                The information contained in this e-mail is private &
confidential and may also be legally privileged. If you are not the
intended recipient, please notify us, preferably by e-mail, and do not
read, copy or disclose the contents of this message to anyone.

        The information contained in this e-mail is private &
confidential and may also be legally privileged. If you are not the
intended recipient, please notify us, preferably by e-mail, and do not
read, copy or disclose the contents of this message to anyone.

Reply via email to