I have need to populate 2 different ids in the same table on insert and I am trying to use selectKey to pull values from Oracle sequence to populate the ids.
With one id and selectKey I have no problems but when I add the second selectKey the value does not seem to be populating (see insert stanza below).
Is it possible to do this? Or will I need to create another query to update the second id?
Thanks
<insert id="create" parameterClass="MyObject">
<selectKey keyProperty="id" resultClass="long" type="pre">
<include refid="sequences.myObjectId" />
</selectKey>
<selectKey keyProperty="mySecondId" resultClass="long" type="pre">
<include refid="sequences.mySecondId" />
</selectKey>
INSERT INTO MY_OBJECT_TABLE
(
MY_OBJECT_ID,
MY_SECOND_ID,
...
)
VALUES
)
#id#,
#mySecondId#,
...
)
</insert>
THERE CAN BE ONLY ONE!
Eventually I have discovered that there can only be one stanza in an ibatis insert stanza.
However I was able to update the second key as follows (I believe this is oracle specific):
<insert id="create" parameterClass="MyObject">
<selectKey keyProperty="id" resultClass="long" type="pre">
<include refid="sequences.myObjectId" />
</selectKey>
INSERT INTO MY_OBJECT_TABLE
(
MY_OBJECT_ID,
MY_SECOND_ID,
...
)
VALUES
)
#id#,
MY_SECOND_ID_SEQUENCE.nextval,
...
)
</insert>
MY_SECOND_ID_SEQUENCE
is the Oracle sequence name that I previously defined.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With