2013-06-11 7 views
5

Aynı tabloda 2 farklı kimliğin doldurulmasına ihtiyacım var ve ben kimlikleri doldurmak için Oracle dizisinden değerleri almak için selectKey kullanmaya çalışıyorum.İbatis'te aynı insert sorgusunda birden fazla selectKey maddesinin bulunması mümkün mü?

Tek bir kimlikle seçeneğini seçin ve SeçKeyim Sorunum yok ancak ikinci selectKey'i eklediğimde, değer popülasyon yapmıyor gibi görünüyor (bkz. Aşağıdaki stanza'yı takın).

Bunu yapmak mümkün mü? Yoksa ikinci kimliği güncellemek için başka bir sorgu oluşturmam gerekecek mi?

Teşekkür

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

cevap

3

SADECE BİR OLUR! Son olarak, ibatis insert stanza'da sadece bir stanza olabileceğini keşfettim.

<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 daha önce tanımlandığı Oracle dizisi adı:

Ancak şu şekilde ikinci anahtarı güncelleyebilmifltir (bu belirli oracle inanıyoruz).

+0

Kendi anlaşmamı cevaplamaktan hoşlanmıyorum ama sonunda cevabı başka bir yerde buldum. Umarım bu gelecekte başkalarına yardımcı olur. –

+0

MS SQL kullanıyorum, benzer bir gereksinime sahibim. Şimdi burada ** MY_SECOND_ID ** dizisini sıralamak yerine, başka bir tablodan getirmem gerekiyor. Sıra yerine seçim sorgusu kullanmak mümkün mü? –

+1

MS SQL kullanıyorum ama belki de MY_SECOND_ID_SEQUENCE.nextval yerine (SELECT ID FROM yourQuery) ekledim. –

İlgili konular