From 10e595a628414947780d0f641bc65377d28f74c9 Mon Sep 17 00:00:00 2001 From: Michael Yang Date: Thu, 13 Nov 2025 12:23:23 +0800 Subject: [PATCH] fix: fixed and close https://gitee.com/mybatis-flex/mybatis-flex/issues/ID64KB --- .../java/com/mybatisflex/core/keygen/RowKeyGenerator.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/keygen/RowKeyGenerator.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/keygen/RowKeyGenerator.java index c89b71ad..e5d6e657 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/keygen/RowKeyGenerator.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/keygen/RowKeyGenerator.java @@ -42,8 +42,9 @@ public class RowKeyGenerator implements KeyGenerator, IMultiKeyGenerator { private static final KeyGenerator[] NO_KEY_GENERATORS = new KeyGenerator[0]; private final MappedStatement ms; - private KeyGenerator[] keyGenerators; private Set autoKeyGeneratorNames; + private KeyGenerator[] keyGenerators; + public RowKeyGenerator(MappedStatement methodMappedStatement) { this.ms = methodMappedStatement; @@ -52,6 +53,8 @@ public class RowKeyGenerator implements KeyGenerator, IMultiKeyGenerator { @Override public void processBefore(Executor executor, MappedStatement ms, Statement stmt, Object parameter) { Row row = (Row) ((Map) parameter).get(FlexConsts.ROW); + // 重置 autoKeyGeneratorNames fix https://gitee.com/mybatis-flex/mybatis-flex/issues/ID64KB + autoKeyGeneratorNames = null; keyGenerators = buildRowKeyGenerators(RowCPI.obtainsPrimaryKeys(row)); for (KeyGenerator keyGenerator : keyGenerators) { keyGenerator.processBefore(executor, ms, stmt, parameter); @@ -89,7 +92,7 @@ public class RowKeyGenerator implements KeyGenerator, IMultiKeyGenerator { String keyColumn = rowKey.getKeyColumn(); if (rowKey.getKeyType() == KeyType.Auto) { if (autoKeyGeneratorNames == null) { - autoKeyGeneratorNames = new HashSet<>(); + autoKeyGeneratorNames = new LinkedHashSet<>(); } autoKeyGeneratorNames.add(keyColumn); return new RowJdbc3KeyGenerator(keyColumn);