JdbcBatchItemWriter 中的 JdbcTemplate 正在删除插入语句中的列名时间戳

问题描述 投票:0回答:0

我们正在使用 Spring Batch 将记录从一个数据库同步到另一个数据库。

目标表定义是这样的:

CREATE TABLE entity_name (
    entity_id varchar(255) NOT NULL,
    value varchar(255) NOT NULL,
    source varchar(255) NULL,
    type enum('type1', 'type2','type3') NULL,
    timestamp timestamp NULL,
    status varchar(50) DEFAULT 'approved',
    CONSTRAINT entity_name_pkey PRIMARY KEY (entity_id, value)
);

作者通过以下方式实例化:

String command = "insert into entity_name(entity_id, value, source, type, status, timestamp) values(:entityId, :value, :source, :type, :status, :timestamp)";

JdbcBatchItemWriter<EntityName> entityWriter = new DefaultItemWriter<EntityName>(dataSource, jdbcTemplate, command, excludedTypes).getWriter();

但是,根据 JdbcBatchItemWriter 调试日志,它似乎正在删除声明中的

timestamp
列:

08:48:16.528 [main] DEBUG org.springframework.batch.item.database.JdbcBatchItemWriter - Executing batch with 2 items.
08:48:16.529 [main] DEBUG org.springframework.jdbc.core.JdbcTemplate - Executing SQL batch update [insert into entity_name(entity_id, value, source, type, status ) values(?, ?, ?, ?, ?)]

我知道我们可能不应该为列名使用保留字,但它现在是什么,我想知道这是否是 JdbcTemplate 中的预期行为,以及是否有任何方法可以解决这个问题。

jdbc spring-batch spring-jdbc jdbctemplate namedparameterjdbctemplate
© www.soinside.com 2019 - 2024. All rights reserved.