Я пытаюсь использовать JOOQ для вставки строки в MySQL 8 с отображением Instant <-> DATETIME, но я получаю org.jooq.exception.DataAccessException
с root причиной com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: Incorrect datetime value: '2020-05-02 02:45:38.134463+00:00' for column 'created' at row 1
По какой-то причине JOOQ добавляет +00:00
в столбец DATETIME, и этот формат не поддерживается MySQL.
Есть идеи, если JOOQ может управлять этим из коробки?
CREATE TABLE `user` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`version` BIGINT NOT NULL DEFAULT 0,
`name` VARCHAR(255) NOT NULL,
`created` DATETIME NOT NULL,
PRIMARY KEY (`id`),
UNIQUE INDEX `ind_name`(`name`)
);
@Getter
@Setter
public class User {
@NonNull
@Id
private Long id;
@NonNull
@Version
private Long version;
@NonNull
@Column(name = "name")
private String name;
@NonNull
@Column(name = "created")
private Instant created;
}
dslContext.insertInto( DSL.table( "user" ), field( "name", String.class ),
//or field( "created", Instant.class), the result is the same
field( "created", SQLDataType.INSTANT ) )
.values( name, Instant.now() )
.returningResult( DSL.asterisk() )
.fetchOne()
.into( User.class );