Browse Source

优化实体映射

zhouhao 3 years ago
parent
commit
6b0ba45630

+ 10 - 1
hsweb-commons/hsweb-commons-crud/src/main/java/org/hswebframework/web/crud/configuration/DetectEntityColumnMapping.java

@@ -4,6 +4,7 @@ import org.hswebframework.ezorm.rdb.mapping.EntityColumnMapping;
 import org.hswebframework.ezorm.rdb.mapping.MappingFeatureType;
 import org.hswebframework.ezorm.rdb.metadata.RDBColumnMetadata;
 import org.hswebframework.ezorm.rdb.metadata.TableOrViewMetadata;
+import org.hswebframework.web.api.crud.entity.EntityFactory;
 
 import java.util.Map;
 import java.util.Optional;
@@ -12,12 +13,15 @@ class DetectEntityColumnMapping implements EntityColumnMapping {
     private final String id;
     private final Class<?> type;
     private final EntityColumnMapping mapping;
+    private final EntityFactory entityFactory;
 
     public DetectEntityColumnMapping(Class<?> type,
-                                     EntityColumnMapping mapping) {
+                                     EntityColumnMapping mapping,
+                                     EntityFactory entityFactory) {
         this.id = MappingFeatureType.columnPropertyMapping.createFeatureId(type);
         this.type = type;
         this.mapping = mapping;
+        this.entityFactory = entityFactory;
     }
 
     @Override
@@ -50,6 +54,11 @@ class DetectEntityColumnMapping implements EntityColumnMapping {
         return mapping.getTable();
     }
 
+    @Override
+    public Object newInstance() {
+        return entityFactory.newInstance(getEntityType());
+    }
+
     @Override
     public String getId() {
         return id;

+ 2 - 2
hsweb-commons/hsweb-commons-crud/src/main/java/org/hswebframework/web/crud/configuration/EasyormConfiguration.java

@@ -173,7 +173,7 @@ public class EasyormConfiguration {
                 @Override
                 public EntityColumnMapping getMapping(Class entity) {
 
-                    return resolver.resolve(entityFactory.getInstanceType(entity, true))
+                    return resolver.resolve(entity)
                                    .getFeature(MappingFeatureType.columnPropertyMapping.createFeatureId(entity))
                                    .map(EntityColumnMapping.class::cast)
                                    .orElse(null);
@@ -207,7 +207,7 @@ public class EasyormConfiguration {
                                     entityType,
                                     table.findFeatureNow(
                                             MappingFeatureType.columnPropertyMapping.createFeatureId(realType)
-                                    )));
+                                    ),factory));
                         }
                         for (TableMetadataCustomizer customizer : customizers) {
                             customizer.customTable(realType, table);