如何在没有代码生成的情况下使用 Jooq insert ... returning in MySQL?
How do I use Jooq insert ... returning in MySQL without code generation?
我一直在尝试使用 insert...returning in MySQL 和基于 DSL 的 table 定义(我没有使用代码生成)并且我返回的记录总是无效的。根据阅读,我需要在 table 定义中指定标识列,但我不知道该怎么做!
Record recordKey = create.insertInto(table("modulerecords"),
field("id"),
field("module_id"),
field("created_date"),
field("created_by"),
field("state"),
field("tag_id"),
field("start_time",Timestamp.class),
field("kill_time", Timestamp.class),
field("feed_guid")
)
.values(null, moduleId, currentTimestamp(),
userId, state, tagId,
new Timestamp(startTime),
new Timestamp(killTime), feedGuid)
.returning(field("id"))
.fetchOne();
字段"id"是数据库中的auto_increment主键,但recordKey始终为null。
强烈建议您使用代码生成器向 DSL API 提供所有元信息。当然,您可以不使用代码生成器,而仍然使用代码生成器本来会使用的内部 APIs。而不是使用 plain SQL API, you'd have to create a TableImpl
子类创建 table 和字段引用并覆盖/实现所有相关方法。
或者,您只需使用代码生成器。
我一直在尝试使用 insert...returning in MySQL 和基于 DSL 的 table 定义(我没有使用代码生成)并且我返回的记录总是无效的。根据阅读,我需要在 table 定义中指定标识列,但我不知道该怎么做!
Record recordKey = create.insertInto(table("modulerecords"),
field("id"),
field("module_id"),
field("created_date"),
field("created_by"),
field("state"),
field("tag_id"),
field("start_time",Timestamp.class),
field("kill_time", Timestamp.class),
field("feed_guid")
)
.values(null, moduleId, currentTimestamp(),
userId, state, tagId,
new Timestamp(startTime),
new Timestamp(killTime), feedGuid)
.returning(field("id"))
.fetchOne();
字段"id"是数据库中的auto_increment主键,但recordKey始终为null。
强烈建议您使用代码生成器向 DSL API 提供所有元信息。当然,您可以不使用代码生成器,而仍然使用代码生成器本来会使用的内部 APIs。而不是使用 plain SQL API, you'd have to create a TableImpl
子类创建 table 和字段引用并覆盖/实现所有相关方法。
或者,您只需使用代码生成器。