我们正在使用 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 中的预期行为,以及是否有任何方法可以解决这个问题。