2013-06-11 12 views
5

Ho bisogno di compilare 2 ID diversi nella stessa tabella su insert e sto cercando di usare selectKey per estrarre i valori dalla sequenza Oracle per popolare gli id.E 'possibile in ibatis avere più di una clausola selectKey nella stessa query di inserimento?

Con un id e selectKey non ho problemi, ma quando aggiungo il secondo selectKey il valore non sembra essere popoloso (vedi inserire la stanza sotto).

È possibile farlo? O avrò bisogno di creare un'altra query per aggiornare il secondo id?

Grazie

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

risposta

3

non ci può essere solo uno!

Alla fine ho scoperto che può esistere solo una stanza in una stanza di inserimento di ibatis.

Tuttavia ho potuto aggiornare la seconda chiave come segue (I che questo sia oracolo specifico):

<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 è il nome della sequenza Oracle che precedentemente definito.

+0

Non mi piace rispondere al mio accordo ma alla fine ho trovato la risposta altrove. Speriamo che questo possa aiutare qualcun altro in futuro. –

+0

Sto usando MS SQL, ho un requisito simile. Ora qui invece di ottenere ** MY_SECOND_ID ** dalla sequenza, ho bisogno di recuperare da qualche altra tabella. È possibile utilizzare la query di selezione anziché la sequenza? –

+1

È passato un po 'di tempo da quando ho usato MS SQL ma forse aggiungendo (SELECT ID FROM yourQuery), al posto di MY_SECOND_ID_SEQUENCE.nextval,? –

Problemi correlati