7

挿入時に同じテーブルに2つの異なるIDを入力する必要があり、selectKeyを使用してOracleシーケンスから値を取得してIDを入力しようとしています。

1 つの id と selectKey では問題はありませんが、2 番目の selectKey を追加すると、値が入力されていないようです (以下の挿入スタンザを参照)。

これを行うことは可能ですか?または、2 番目の 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>
4

2 に答える 2

3

一つだけ存在することができます!

最終的に、ibatis 挿入スタンザには 1 つのスタンザしか存在できないことがわかりました。

ただし、次のように2番目のキーを更新できました(これはオラクル固有のものだと思います):

<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 シーケンス名です。

于 2013-06-12T14:47:37.980 に答える