jOOQ: исключить столбец в обновлении - PullRequest
3 голосов
/ 16 марта 2020

В этом коде я обновляю строку BOOKS, стараясь не устанавливать значение NULL для столбца, поскольку в myPojo указано значение NULL, и я не хочу его переопределять (т.е. я пытаюсь исключить столбец из обновления) :

        BooksRecord rec = new BooksRecord();
        rec.from(myPojo);               
        context.update(BOOKS)
           .set(rec)
           .set(BOOKS.TITLE, BOOKS.TITLE)
           .where(BOOKS.SK.eq(sk))
           .execute();

Но это не работает, столбец TITLE имеет значение NULL. Есть ли способ сделать эту работу?

1 Ответ

3 голосов
/ 17 марта 2020

Сделайте это следующим образом:

BooksRecord rec = new BooksRecord();
rec.from(myPojo);
rec.reset(BOOKS.TITLE);
rec.update();

Вызов Record.reset(Field) сбрасывает базовый флаг Record.changed() поля перед любым дальнейшим действием, например как Record.update() или когда вы копируете измененные значения записи в оператор Update, как вы сделали.

...