diff --git a/hsweb-boost/hsweb-boost-compiler/src/main/java/org/hswebframework/web/boost/bean/FastBeanCopier.java b/hsweb-boost/hsweb-boost-compiler/src/main/java/org/hswebframework/web/boost/bean/FastBeanCopier.java index de7397eff..91932d5cd 100644 --- a/hsweb-boost/hsweb-boost-compiler/src/main/java/org/hswebframework/web/boost/bean/FastBeanCopier.java +++ b/hsweb-boost/hsweb-boost-compiler/src/main/java/org/hswebframework/web/boost/bean/FastBeanCopier.java @@ -58,7 +58,8 @@ public class FastBeanCopier { } public static void copy(Object source, Object target, Converter converter, String... ignore) { - getCopier(source, target, true).copy(source, target, (ignore == null || ignore.length == 0) ? new HashSet<>() : new HashSet<>(Arrays.asList(ignore)), converter); + getCopier(source, target, true) + .copy(source, target, (ignore == null || ignore.length == 0) ? new HashSet<>() : new HashSet<>(Arrays.asList(ignore)), converter); } private static String createCacheKey(Class source, Class target) { @@ -162,8 +163,12 @@ public class FastBeanCopier { .append(source.getReadMethod().getName()) .append("()!=null"); } + String targetTypeName = target.getPropertyType().getName(); + if (target.getPropertyType().isArray()) { + targetTypeName = target.getPropertyType().getComponentType().getName() + "[]"; + } convertCode.append("){\n"); - convertCode.append(target.getPropertyType().getName()) + convertCode.append(targetTypeName) .append(" ") .append(target.getName()).append("="); String convert = "converter.convert((Object)(" + getReadSourceObjectValueCode() + ")," diff --git a/hsweb-boost/hsweb-boost-compiler/src/test/java/org/hswebframework/web/boost/FastBeanCopierTest.java b/hsweb-boost/hsweb-boost-compiler/src/test/java/org/hswebframework/web/boost/FastBeanCopierTest.java index d95b5a01c..0b9b97dc1 100644 --- a/hsweb-boost/hsweb-boost-compiler/src/test/java/org/hswebframework/web/boost/FastBeanCopierTest.java +++ b/hsweb-boost/hsweb-boost-compiler/src/test/java/org/hswebframework/web/boost/FastBeanCopierTest.java @@ -23,6 +23,7 @@ public class FastBeanCopierTest { Source source = new Source(); source.setAge(100); source.setName("测试"); + source.setIds(new String[]{"1","2","3"}); NestObject nestObject = new NestObject(); nestObject.setAge(10); nestObject.setName("测试2"); diff --git a/hsweb-boost/hsweb-boost-compiler/src/test/java/org/hswebframework/web/boost/NestObject.java b/hsweb-boost/hsweb-boost-compiler/src/test/java/org/hswebframework/web/boost/NestObject.java index 24073e177..283e336b1 100644 --- a/hsweb-boost/hsweb-boost-compiler/src/test/java/org/hswebframework/web/boost/NestObject.java +++ b/hsweb-boost/hsweb-boost-compiler/src/test/java/org/hswebframework/web/boost/NestObject.java @@ -11,4 +11,5 @@ public class NestObject { private String name; private int age; + } diff --git a/hsweb-boost/hsweb-boost-compiler/src/test/java/org/hswebframework/web/boost/Source.java b/hsweb-boost/hsweb-boost-compiler/src/test/java/org/hswebframework/web/boost/Source.java index 8874e0e53..26f30b969 100644 --- a/hsweb-boost/hsweb-boost-compiler/src/test/java/org/hswebframework/web/boost/Source.java +++ b/hsweb-boost/hsweb-boost-compiler/src/test/java/org/hswebframework/web/boost/Source.java @@ -6,6 +6,7 @@ import lombok.Data; public class Source { private String name; private int age; + private String[] ids; private NestObject nestObject; diff --git a/hsweb-boost/hsweb-boost-compiler/src/test/java/org/hswebframework/web/boost/Target.java b/hsweb-boost/hsweb-boost-compiler/src/test/java/org/hswebframework/web/boost/Target.java index 5b457e04a..147791a95 100644 --- a/hsweb-boost/hsweb-boost-compiler/src/test/java/org/hswebframework/web/boost/Target.java +++ b/hsweb-boost/hsweb-boost-compiler/src/test/java/org/hswebframework/web/boost/Target.java @@ -6,6 +6,7 @@ import lombok.Data; public class Target { private String name; private int age; + private String[] ids; private NestObject nestObject; } \ No newline at end of file