miemie 4 лет назад
Родитель
Сommit
0fbc8a5f6e

+ 9 - 11
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/conditions/AbstractLambdaWrapper.java

@@ -78,24 +78,22 @@ public abstract class AbstractLambdaWrapper<T, Children extends AbstractLambdaWr
     private String getColumn(SerializedLambda lambda, boolean onlyColumn) throws MybatisPlusException {
         String fieldName = PropertyNamer.methodToProperty(lambda.getImplMethodName());
         Class<?> aClass = lambda.getInstantiatedType();
-        if (!initColumnMap) {
-            columnMap = LambdaUtils.getColumnMap(aClass);
-            initColumnMap = true;
-        }
-        Assert.notNull(columnMap, "can not find lambda cache for this entity [%s]", aClass.getName());
+        tryInitCache(aClass);
         ColumnCache columnCache = columnMap.get(LambdaUtils.formatKey(fieldName));
         Assert.notNull(columnCache, "can not find lambda cache for this property [%s] of entity [%s]",
             fieldName, aClass.getName());
         return onlyColumn ? columnCache.getColumn() : columnCache.getColumnSelect();
     }
 
-    @Override
-    protected void initNeed() {
-        super.initNeed();
-        final Class<T> entityClass = getEntityClass();
-        if (entityClass != null) {
-            columnMap = LambdaUtils.getColumnMap(entityClass);
+    private void tryInitCache(Class<?> lambdaClass) {
+        if (!initColumnMap) {
+            final Class<T> entityClass = getEntityClass();
+            if (entityClass != null) {
+                lambdaClass = entityClass;
+            }
+            columnMap = LambdaUtils.getColumnMap(lambdaClass);
             initColumnMap = true;
         }
+        Assert.notNull(columnMap, "can not find lambda cache for this entity [%s]", lambdaClass.getName());
     }
 }