Обновление JOOQ не содержит значений - PullRequest
0 голосов
/ 11 декабря 2018

В приложении Spring Boot я использую JOOQ для сборки SQL, который затем выполняется через JdbcTemplate.Я не использую codegen или не выполняю запросы с JOOQ.Проблема, с которой я столкнулся, связана с обновлением.Я использую table() и field() в качестве статического импорта из org.jooq.impl.DSL.Таблица объявлена ​​в верхней части класса следующим образом:

private final Table<Record> TABLE = table("rjri.participant");

Вот строковое представление объекта, который я использую для обновления:

Participant{id='10',{ firstName='Jacob', lastName='Nerney', dateOfBirth='1985-01-14T20:51:39', address='1662 Ryan Ave', city='Murray', state='KY', zip='420711234', phoneNumber='2702274322', email='nern@mail.com'}}

Вот код JOOQЯ использую для создания оператора обновления:

final String sql = dslContext.update(TABLE)
            .set(field("first_name"), participant.getFirstName())
            .set(field("last_name"), participant.getLastName())
            .set(field("date_of_birth"),
                    DateTimeFormatter.toDateTimeString(participant.getDateOfBirth()))
            .set(field("address"), participant.getAddress())
            .set(field("city"), participant.getCity())
            .set(field("state"), participant.getState()).set(field("zip"), participant.getZip())
            .set(field("phone"), participant.getPhoneNumber())
            .set(field("email"), participant.getEmail())
            .set(field("modified_date"),
                    DateTimeFormatter.toDateTimeString(LocalDateTime.now()))
            .where("id = " + participant.getId()).getSQL();

Но, когда я запускаю этот код, создается SQL:

update rjri.participant set first_name = ?, last_name = ?, date_of_birth = ?, address = ?, city = ?, state = ?, zip = ?, phone = ?, email = ?, modified_date = ? where (id = 10)

Я не могу понять, почему значенияне заселен.Спаси меня!

1 Ответ

0 голосов
/ 11 декабря 2018

Вы можете использовать метод Query.getSQL(ParamType), чтобы заставить jOOQ встроить все переменные связывания.Но, скорее всего, вам будет лучше использовать подготовленный оператор по соображениям производительности, в случае которого вы должны извлекать строку SQL, используя Query.getSQL(), и переменные связывания, используя Query.getBindValues().

...