diff --git a/hsweb-commons/hsweb-commons-crud/src/main/java/org/hswebframework/web/crud/configuration/EasyormRepositoryRegistrar.java b/hsweb-commons/hsweb-commons-crud/src/main/java/org/hswebframework/web/crud/configuration/EasyormRepositoryRegistrar.java index 0947c94c2..9fe25ff59 100644 --- a/hsweb-commons/hsweb-commons-crud/src/main/java/org/hswebframework/web/crud/configuration/EasyormRepositoryRegistrar.java +++ b/hsweb-commons/hsweb-commons-crud/src/main/java/org/hswebframework/web/crud/configuration/EasyormRepositoryRegistrar.java @@ -15,6 +15,8 @@ import org.springframework.beans.factory.support.AbstractBeanDefinition; import org.springframework.beans.factory.support.BeanDefinitionRegistry; import org.springframework.beans.factory.support.RootBeanDefinition; import org.springframework.context.annotation.ImportBeanDefinitionRegistrar; +import org.springframework.context.index.CandidateComponentsIndex; +import org.springframework.context.index.CandidateComponentsIndexLoader; import org.springframework.core.ResolvableType; import org.springframework.core.annotation.AnnotationUtils; import org.springframework.core.io.Resource; @@ -25,6 +27,7 @@ import org.springframework.core.type.classreading.MetadataReader; import org.springframework.core.type.classreading.MetadataReaderFactory; import org.springframework.core.type.classreading.SimpleMetadataReaderFactory; +import javax.persistence.Table; import java.lang.annotation.Annotation; import java.lang.reflect.Method; import java.util.*; @@ -60,18 +63,26 @@ public class EasyormRepositoryRegistrar implements ImportBeanDefinitionRegistrar boolean nonReactiveEnabled = Boolean.TRUE.equals(attr.get("nonReactive")); String[] arr = (String[]) attr.get("value"); - Set resources = Arrays - .stream(arr) - .flatMap(this::doGetResources) - .collect(Collectors.toSet()); +// Set resources = Arrays +// .stream(arr) +// .flatMap(this::doGetResources) +// .collect(Collectors.toSet()); Class[] anno = (Class[]) attr.get("annotation"); Set entityInfos = new HashSet<>(); - - for (Resource resource : resources) { - MetadataReader reader = metadataReaderFactory.getMetadataReader(resource); - String className = reader.getClassMetadata().getClassName(); + CandidateComponentsIndex index = CandidateComponentsIndexLoader.loadIndex(org.springframework.util.ClassUtils.getDefaultClassLoader()); + Set entities = Stream + .of(arr) + .flatMap(_package -> { + return index + .getCandidateTypes(_package, Table.class.getName()) + .stream(); + }) + .collect(Collectors.toSet()); + for (String className : entities) { +// MetadataReader reader = metadataReaderFactory.getMetadataReader(resource); +// String className = reader.getClassMetadata().getClassName(); Class entityType = org.springframework.util.ClassUtils.forName(className, null); if (Arrays.stream(anno) .noneMatch(ann -> AnnotationUtils.findAnnotation(entityType, ann) != null)) {