From cfc324aae0718ca175a673499ad67642854f3e4c Mon Sep 17 00:00:00 2001 From: zhouhao Date: Wed, 11 Oct 2023 15:22:28 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8DQueryHelper=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E6=97=B6=E6=97=A0=E6=B3=95=E4=BD=BF=E7=94=A8=E7=88=B6?= =?UTF-8?q?=E7=B1=BB=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/crud/query/DefaultQueryHelper.java | 8 +++++++- .../web/crud/query/DefaultQueryHelperTest.java | 11 ++++++++--- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/hsweb-commons/hsweb-commons-crud/src/main/java/org/hswebframework/web/crud/query/DefaultQueryHelper.java b/hsweb-commons/hsweb-commons-crud/src/main/java/org/hswebframework/web/crud/query/DefaultQueryHelper.java index e4e07a707..b78e1215d 100644 --- a/hsweb-commons/hsweb-commons-crud/src/main/java/org/hswebframework/web/crud/query/DefaultQueryHelper.java +++ b/hsweb-commons/hsweb-commons-crud/src/main/java/org/hswebframework/web/crud/query/DefaultQueryHelper.java @@ -37,6 +37,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.core.ResolvableType; import org.springframework.core.annotation.AnnotatedElementUtils; +import org.springframework.util.ReflectionUtils; import org.springframework.util.StringUtils; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; @@ -44,6 +45,7 @@ import reactor.util.context.Context; import reactor.util.context.ContextView; import javax.persistence.Table; +import java.lang.reflect.Field; import java.util.*; import java.util.concurrent.ConcurrentHashMap; import java.util.function.Consumer; @@ -318,7 +320,11 @@ public class DefaultQueryHelper implements QueryHelper { this.tableType = tableType; this.targetProperty = setter == null ? null : MethodReferenceConverter.convertToColumn(setter); if (this.targetProperty != null) { - propertyType = ResolvableType.forField(parent.clazz.getDeclaredField(targetProperty), parent.clazz); + Field field = ReflectionUtils.findField(parent.clazz, targetProperty); + if (field == null) { + throw new NoSuchFieldException(parent.clazz.getName() + "." + targetProperty); + } + propertyType = ResolvableType.forField(field, parent.clazz); } else { propertyType = null; } diff --git a/hsweb-commons/hsweb-commons-crud/src/test/java/org/hswebframework/web/crud/query/DefaultQueryHelperTest.java b/hsweb-commons/hsweb-commons-crud/src/test/java/org/hswebframework/web/crud/query/DefaultQueryHelperTest.java index e956eb44f..ba834439e 100644 --- a/hsweb-commons/hsweb-commons-crud/src/test/java/org/hswebframework/web/crud/query/DefaultQueryHelperTest.java +++ b/hsweb-commons/hsweb-commons-crud/src/test/java/org/hswebframework/web/crud/query/DefaultQueryHelperTest.java @@ -65,7 +65,7 @@ class DefaultQueryHelperTest { .insert("s_test") .value("id", "inner-test") .value("name", "inner") - .value("testName","inner") + .value("testName", "inner") .value("age", 31) .execute() .sync(); @@ -159,7 +159,7 @@ class DefaultQueryHelperTest { public void testCustomFirstPageIndex() { DefaultQueryHelper helper = new DefaultQueryHelper(database); QueryParamEntity e = new QueryParamEntity(); - e.and("id","eq","testCustomFirstPageIndex"); + e.and("id", "eq", "testCustomFirstPageIndex"); e.setFirstPageIndex(1); e.setPageIndex(2); @@ -243,7 +243,7 @@ class DefaultQueryHelperTest { @Getter @Setter @ToString - public static class TestInfo { + public static class TestInfo extends TestInfoSuper { private String id; @@ -255,6 +255,11 @@ class DefaultQueryHelperTest { private EventTestEntity event; + } + + @Getter + @Setter + public static class TestInfoSuper { private List eventList; } } \ No newline at end of file