PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak wybrać wiele wierszy według ich złożonych kluczy podstawowych w JOOQ?

Jak to zrobić ręcznie

Możesz przetłumaczyć zapytanie SQL bezpośrednio do jOOQ przy użyciu DSL.row() aby skonstruować wyrażenie wartości wiersza, a następnie:

row(TEST_TBL.ID_PART_1, TEST_TBL.ID_PART_2).in(
  row("id_part_1_1", "id_part_2_1"),
  row("id_part_1_2", "id_part_2_2")
);

Zobacz także jOOQ sekcja podręcznika dotycząca IN orzeczenie, stopień> 1

Użyj klawiszy osadzalnych

Alternatywnie możesz skorzystać z dodatkowego bezpieczeństwa typu oferowanego przez nowy jOOQ 3.14 <embeddablePrimaryKeys/> funkcja, która umożliwia generowanie typów rekordów dla wszystkich kluczy podstawowych i ich odwołujących się kluczy obcych. Twoje zapytanie będzie wtedy brzmieć:

ctx.select()
   .from(TEST_TBL)
   .where(TEST_TBL.TEST_TBL_PKEY.in(
      new TestTblPkeyRecord("id_part_1_1", "id_part_2_1"),
      new TestTblPkeyRecord("id_part_1_2", "id_part_2_2")
   ))
   .fetch();

Daje to takie samo zapytanie jak oryginalne, ale robi to bezpiecznie i nigdy więcej nie zapomnisz kolumny klucza. Nie tylko podczas zapytania o klucz podstawowy, ale także podczas dołączania do niego! Zmiana klucza spowoduje błąd kompilacji:

ctx.select()
   .from(TEST_TBL)
   .join(OTHER_TEST_TBL)
   .on(TEST_TBL.TEST_TBL_PKEY.eq(OTHER_TEST_TBL.TEST_TBL_PKEY.TEST_TBL_FKEY))
   .fetch();

Lub niejawne dołączenie wyglądałby tak:

ctx.select(OTHER_TEST_TBL.testTbl().fields(), OTHER_TEST_TBL.fields())
   .from(OTHER_TEST_TBL)
   .fetch();



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ST_DWithin czasami nie używa indeksu

  2. Programowo generuj DDL w Postgresql

  3. Jak wskazać, że kolumna nie dopuszcza wartości null podczas tworzenia widoku zmaterializowanego?

  4. Połączenie lewostronne w Postgresie nie zwraca wartości dla wartości Null

  5. Modelowanie tabel bazy danych użytkowników, grup i członkostwa