繁体   English   中英

JOOQ更新集未填充值

[英]JOOQ update set not populating values

在Spring Boot应用程序中,我使用JOOQ构建SQL,然后通过JdbcTemplate执行该SQL。 我没有使用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)

我无法弄清楚为什么未填充值。 救我!

您可以使用Query.getSQL(ParamType)方法强制jOOQ内联所有绑定变量。 但很可能,你会好起来的使用准备好的声明性能方面的原因,在这情况下,你都应该提取使用SQL字符串Query.getSQL()使用绑定变量和Query.getBindValues()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM