Java 具有相关名称的ModelMapper属性字段(以驼峰为例)
转换源领域中具有源属性名称内容的实体时出错,该实体包含驼峰形案例部分 示例:在源模型中,我有一个字符串字段edgeId,在目标模型中,我有一个长id的字段,匹配为true。这将生成一个异常,java.lang.NumberFormatException,即如何忽略此匹配 这在使用其他属性名称时发生Java 具有相关名称的ModelMapper属性字段(以驼峰为例),java,mapper,modelmapper,Java,Mapper,Modelmapper,转换源领域中具有源属性名称内容的实体时出错,该实体包含驼峰形案例部分 示例:在源模型中,我有一个字符串字段edgeId,在目标模型中,我有一个长id的字段,匹配为true。这将生成一个异常,java.lang.NumberFormatException,即如何忽略此匹配 这在使用其他属性名称时发生 package br.com.combinado; import org.modelmapper.ModelMapper; public class TestModelMapper {
package br.com.combinado;
import org.modelmapper.ModelMapper;
public class TestModelMapper {
public static void main(String[] args) {
Target target = new Target();
target.setTesteBatataFrita("batataFrinta");
ModelMapper mapper = new ModelMapper();
Source source = mapper.map(target, Source.class);
System.out.println(source);
}
private static class Source {
private Long frita;
public Long getFrita() {
return frita;
}
public void setFrita(Long frita) {
this.frita = frita;
}
}
private static class Target {
private String testeBatataFrita;
public String getTesteBatataFrita() {
return testeBatataFrita;
}
public void setTesteBatataFrita(String testeBatataFrita) {
this.testeBatataFrita = testeBatataFrita;
}
}
}
我通过添加一个添加SourceNameTokenizer解决了这个问题
mapper.getConfiguration().setSourceNameTokenizer(new NameTokenizer() {
public String[] tokenize(String name, NameableType nameableType) {
return new String[] { name };
}
});
或
@Bean
public ModelMapper modelMapper() {
final ModelMapper mapper = new ModelMapper();
mapper.getConfiguration().setDestinationNameTokenizer((name, nameableType) -> new String[] { name });
mapper.getConfiguration().setSourceNameTokenizer((name, nameableType) -> new String[] { name });
return mapper;
}