2013-06-11 4 views
5

Potrzebuję wypełnić 2 różne identyfikatory w tej samej tabeli we wkładce i próbuję użyć selectKey do pobrania wartości z sekwencji Oracle w celu zapełnienia identyfikatorów.Czy jest możliwe, że w ibatis ma więcej niż jedną klauzulę selectKey w tym samym kwerendzie wstawiania?

Z jednym id i selectKey nie mam żadnych problemów, ale kiedy dodaję drugi selectKey, wartość nie wydaje się zapełniać (patrz sekcja wstawiania poniżej).

Czy można to zrobić? Czy będę musiał utworzyć kolejną kwerendę, aby zaktualizować drugi identyfikator?

Dzięki

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

Odpowiedz

3

może być tylko jeden!

W końcu odkryłem, że może być tylko jedna zwrotka w sekcji wstawki ibatis.

Jednak udało mi się zaktualizować drugi klucz w sposób następujący (wierzę, że to jest specyficzny 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 to nazwa sekwencji Oracle że wcześniej zdefiniowane.

+0

Nie lubię odpowiadać na własne propozycje, ale ostatecznie znalazłem odpowiedź gdzie indziej. Mam nadzieję, że to pomoże komuś innemu w przyszłości. –

+0

Używam MS SQL, mam podobny wymóg. Teraz zamiast odbierać ** MY_SECOND_ID ** z sekwencji, muszę pobrać z innej tabeli. Czy można użyć kwerendy wyboru zamiast sekwencji? –

+1

Minęło trochę czasu odkąd użyłem MS SQL, ale może dodając (SELECT ID z yourQuery), zamiast MY_SECOND_ID_SEQUENCE.nextval,? –

Powiązane problemy