我需要在插入的同一张表中填充2个不同的ID,并且尝试使用selectKey从Oracle序列中提取值以填充ID。

使用一个id和selectKey我没有问题,但是当我添加第二个selectKey时,该值似乎没有填充(请参见下面的插入节)。

是否有可能做到这一点?还是我需要创建另一个查询来更新第二个ID?

谢谢

<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>

最佳答案

只可以有一个人!

最终,我发现ibatis插入节中只能有一个节。

但是我能够按如下方式更新第二个键(我相信这是特定于oracle的):

<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是我先前定义的Oracle序列名称。

关于java - 在ibatis中,同一个插入查询中是否可能有多个selectKey子句?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17046520/

10-09 04:16