JOOQ после executeInsert (), необходимо знать автоматически сгенерированный идентификатор - PullRequest
0 голосов
/ 31 мая 2018

Использование JOOQ (с sqlite3).

Есть некоторый код, который выглядит следующим образом: (Модифицировано из примера в документации: https://www.jooq.org/doc/latest/manual/sql-execution/fetching/pojos/)

// A "mutable" POJO class
public class MyBook {
  public int id;
  public String title;
}

// Create a new POJO instance
MyBook myBook = new MyBook();
// myBook.id = 10; <-- Id is NOT set here because the database auto-generates it
myBook.title = "Animal Farm";

// Load a jOOQ-generated BookRecord from your POJO
BookRecord book = create.newRecord(BOOK, myBook);

// Insert it (explicitly)
create.executeInsert(book);

// What is value of the auto-generated id?

На данный момент мне нужночтобы узнать автоматически сгенерированный идентификатор из базы данных.

  • Есть идеи о том, как его получить?
  • Или мне нужно установить идентификатор перед его сохранением?

1 Ответ

0 голосов
/ 31 мая 2018

Использование executeInsert() похоже не возвращает идентификатор:

// Insert it (explicitly)
create.executeInsert(book);

Однако использование Record.store делает:

book.store()

Вот как перейти от POJO к записичтобы PJO можно было сохранить, а затем получить обновленный POJO со сгенерированным идентификатором:

// A "mutable" POJO class
public class MyBook {
  public int id;
  public String title;
}

// Create a new POJO instance
MyBook myBook = new MyBook();
// myBook.id = 10; <-- Id is NOT set here because the database auto-generates it
myBook.title = "Animal Farm";

// Load a jOOQ-generated BookRecord from your POJO
BookRecord book = create.newRecord(BOOK, myBook);

// Insert it (implicitly) using the BookRecord instead of create.executeInsert()
book.store();            // <--- THIS IS THE KEY DIFFERENCE

// Get new Book POJO from the BookRecord
MyBook newBook = book.into(MyBook.class);

// This is also a handy function to get the Record as Map, 
//   which is easier to view in the debugger
Map<String, Object> bookMap = book.intoMap();
...