如何映射java.util.Map到POJO?ModelMapper:如何映射java.util.Map到POJO?
以下測試給我一個配置錯誤。
似乎有一個類似的問題被打開,但沒有解決https://github.com/jhalterman/modelmapper/issues/116。
測試:
package org.me.modelmapper;
import java.util.HashMap;
import org.modelmapper.ModelMapper;
import org.modelmapper.PropertyMap;
import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
public class MapperTest {
private ModelMapper modelMapper;
public MapperTest() {
}
public static class Foo {
public String a;
public String b;
public String getA() {
return a;
}
public void setA(String a) {
this.a = a;
}
public String getB() {
return b;
}
public void setB(String b) {
this.b = b;
}
}
@BeforeMethod
public void setUpMethod() throws Exception {
modelMapper = new ModelMapper();
modelMapper.getConfiguration()
.setFieldMatchingEnabled(true);
}
@Test
public void shouldMapHashMapToFoo() {
HashMap<String, String> map = new HashMap<>();
map.put("a", "aaaa");
map.put("b", "bbbb");
PropertyMap<HashMap<String, String>, Foo> fooMap = new PropertyMap<HashMap<String, String>, MapperTest.Foo>() {
@Override
protected void configure() {
map(source.get("a"), destination.a);
map(source.get("b"), destination.b);
}
};
modelMapper.addMappings(fooMap);
Foo foo = modelMapper.map(map, Foo.class);
Assert.assertEquals(foo.getA(), map.get("a"));
Assert.assertEquals(foo.getB(), map.get("b"));
}
}
錯誤:
Configuring TestNG with: [email protected]c399
Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 2.326 sec <<< FAILURE!
shouldMapHashMapToFoo(org.me.modelmapper.MapperTest) Time elapsed: 0.186 sec <<< FAILURE!
org.modelmapper.ConfigurationException: ModelMapper configuration errors:
1) Invalid source method java.util.HashMap.get(). Ensure that method has zero parameters and does not return void.
2) Invalid source method java.util.HashMap.get(). Ensure that method has zero parameters and does not return void.
2 errors
at org.modelmapper.internal.Errors.throwConfigurationExceptionIfErrorsExist(Errors.java:241)
at org.modelmapper.internal.ExplicitMappingBuilder.visitPropertyMap(ExplicitMappingBuilder.java:228)
at org.modelmapper.PropertyMap.configure(PropertyMap.java:380)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.modelmapper.internal.ExplicitMappingBuilder.build(ExplicitMappingBuilder.java:194)
at org.modelmapper.internal.TypeMapImpl.addMappings(TypeMapImpl.java:72)
at org.modelmapper.internal.TypeMapStore.getOrCreate(TypeMapStore.java:101)
at org.modelmapper.ModelMapper.addMappings(ModelMapper.java:93)
at org.me.modelmapper.MapperTest.shouldMapHashMapToFoo(MapperTest.java:354)
Results :
Failed tests: shouldMapHashMapToFoo(org.me.modelmapper.MapperTest): ModelMapper configuration errors:
(..)
Tests run: 1, Failures: 1, Errors: 0, Skipped: 0
請在此處粘貼錯誤/最小示例的相應部分。 – Smutje 2014-09-23 12:31:58
gist鏈接中的測試已經很小。謝謝。 – dmz73 2014-09-23 12:37:07
請求是在這裏複製/粘貼2個文件的內容。 – StephaneM 2014-09-23 12:38:56