diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/bean/copier/CopyOptions.java b/hutool-core/src/main/java/org/dromara/hutool/core/bean/copier/CopyOptions.java index 0613be6e2..0d2df9fe4 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/bean/copier/CopyOptions.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/bean/copier/CopyOptions.java @@ -177,7 +177,13 @@ public class CopyOptions implements Serializable { * @return CopyOptions */ public CopyOptions setIgnoreProperties(final String... ignoreProperties) { - return setPropertiesFilter((field, o) -> !ArrayUtil.contains(ignoreProperties, field.getName())); + return setPropertiesFilter((field, o) -> { + if(ignoreCase){ + // issue#I80FP4 + return !ArrayUtil.containsIgnoreCase(ignoreProperties, field.getName()); + } + return !ArrayUtil.contains(ignoreProperties, field.getName()); + }); } /** diff --git a/hutool-core/src/test/java/org/dromara/hutool/core/bean/IssueI80FP4Test.java b/hutool-core/src/test/java/org/dromara/hutool/core/bean/IssueI80FP4Test.java new file mode 100644 index 000000000..77a16d74a --- /dev/null +++ b/hutool-core/src/test/java/org/dromara/hutool/core/bean/IssueI80FP4Test.java @@ -0,0 +1,46 @@ +package org.dromara.hutool.core.bean; + +import lombok.Data; +import org.dromara.hutool.core.bean.copier.CopyOptions; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +public class IssueI80FP4Test { + @Test + public void copyPropertiesTest() { + final Dest sourceDest = new Dest(); + sourceDest.setCPF(33699); + sourceDest.setEnderDest("abc"); + + final Dest dest = new Dest(); + final CopyOptions copyOptions = CopyOptions.of() + .setIgnoreNullValue(true) + .setIgnoreCase(true) + .setIgnoreProperties("enderDest"); + + BeanUtil.copyProperties(sourceDest, dest, copyOptions); + Assertions.assertNull(dest.getEnderDest()); + } + + @Test + public void copyPropertiesTest2() { + final Dest sourceDest = new Dest(); + sourceDest.setCPF(33699); + sourceDest.setEnderDest("abc"); + + final Dest dest = new Dest(); + final CopyOptions copyOptions = CopyOptions.of() + .setIgnoreNullValue(true) + .setIgnoreCase(true) + .setIgnoreProperties("enderdest"); + + BeanUtil.copyProperties(sourceDest, dest, copyOptions); + Assertions.assertNull(dest.getEnderDest()); + } + + @Data + static class Dest{ + private int cPF; + private String enderDest; + } +}