JOOQ: kivonat értékét Field

szavazat
1

Van egy asztalnál PK és a másik oszlop más id. Bizonyos esetekben én kell beszúrni rekord azonos értékeket mindkét oszlopot. Az elsődleges kulcs értékei én vagyok segítségével szekvencia, amely a Field<Long>származó Sequences.MY_SEQ.nextval().

Hogyan tudom értéket kivonni belőle a Field<Long>garantált betét azonos azonosítók mindkét oszlopban? Segítségével Field<Long>a betét kikötés generál 2 különböző azonosítókat oszlopok.

A kérdést 26/01/2017 08:39
a forrás felhasználó
Más nyelveken...                            


2 válasz

szavazat
1

Itt a megoldás:

Long id = dsl.select(Sequences.MY_SEQ.nextval()).fetchOne().value1();

Válaszolt 26/01/2017 09:46
a forrás felhasználó

szavazat
1

Saját megoldást működik, persze, de ez generál két fordulóval az adatbázisba. Egy letöltésére a sorrend értéket és egy másikat a betét. Ha ez nem probléma, tökéletes. Ellenkező esetben, akkor is csinálni egyetlen lekérdezés segítségével INSERT IGNORE .. SELECT:

SQL:

(Oracle szintaxis. Az SQL szintaxis változhat ...)

INSERT IGNORE  INTO my_table (col1, col2, val)
SELECT t.id, t.id, 'abc'
FROM (
  SELECT my_seq.nextval AS id
  FROM dual
) t

a jOOQ

Table<?> t = table(select(MY_SEQ.nextval().as("id"))).as("t");

dsl.insertInto(MY_TABLE)
   .columns(MY_TABLE.COL1, MY_TABLE.COL2, MY_TABLE.VAL)
   .select(
      select(t.field("id"), t.field("id"), val("abc"))
     .from(t))
   .execute();
Válaszolt 29/01/2017 13:37
a forrás felhasználó

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more