【问题标题】:org.dozer.MappingException: No read or write method found for fieldorg.dozer.MappingException:找不到字段的读取或写入方法
【发布时间】:2014-01-24 00:02:35
【问题描述】:

我有一个源 pojo 类,它在其中引用另一个 pojo 类,它在链中,我收到上述错误。

我的代码是

List myMappingFiles = new ArrayList();
             myMappingFiles.add("dozerMapping.xml");
            // myMappingFiles.add("someOtherDozerBeanMappings.xml");
             DozerBeanMapper mapper = new DozerBeanMapper();
             mapper.setMappingFiles(myMappingFiles);
             mapper.map(gsrlObject,temp, "a");

我的 dozermapping.xml 文件是

<?xml version="1.0" encoding="UTF-8"?>
<mappings xmlns="http://dozer.sourceforge.net"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://dozer.sourceforge.net http://dozer.sourceforge.net/schema/beanmapping.xsd">
<mapping map-id="a"> 
    <class-a>com.dnb.dsc.ihx.bom.GSRL</class-a>
    <class-b>com.ihx.model.Subj</class-b>   
    <field>
    <a>gsrlObject.GSRLMSGSRQV1a.SUBJUPDTRNRQList[0].SUBJUPDRQList[0].INVTDATAList[0].PAYLHDR.SUBJID</a>
    <b>subjId</b>
    </field> 
  </mapping>  
  </mappings>

关于此的任何帮助

谢谢

【问题讨论】:

  • 线程“主”org.dozer.MappingException 中的异常:找不到字段的读取或写入方法 (gsrlObject.GSRLMSGSRQV1a.SUBJUPDTRNRQList[0].SUBJUPDRQList[0].INVTDATAList[0].PAYLHDR。 SUBJID) 在 org.dozer.propertydescriptor.GetterSetterPropertyDescriptor.determinePropertyType(GetterSetterPropertyDescriptor.java:291) 在 org.dozer.propertydescriptor.GetterSetterPropertyDescriptor.getPropertyType(GetterSetterPropertyDescriptor.java:291) 类 (com.dnb.dsc.ihx.bom.GSRL) 66)
  • 在 org.dozer.fieldmap.FieldMap.getSrcFieldType(FieldMap.java:121) 在 org.dozer.loader.MappingsParser.processMappings(MappingsParser.java:99) 在 org.dozer.loader.CustomMappingsLoader .load(CustomMappingsLoader.java:65) 在 org.dozer.DozerBeanMapper.loadCustomMappings(DozerBeanMapper.java:213) 在 org.dozer.DozerBeanMapper.getMappingProcessor(DozerBeanMapper.java:186) 在 org.dozer.DozerBeanMapper.map(DozerBeanMapper. java:97) 在 com.ihx.util.ReadIHXFile.main(ReadIHXFile.java:73)

标签: java xml mapping pojo dozer


【解决方案1】:

表示dozerMapping.xml属性不匹配或实体类中不存在该属性。

【讨论】:

  • 这个答案对我很有用!谢谢!
【解决方案2】:

因此,Dozer 无法将您的源路径映射到方法中:

gsrlObject.GSRLMSGSRQV1a.SUBJUPDTRNRQList[0].SUBJUPDRQList[0].INVTDATAList[0].P‌​AYLHDR.SUBJID

如果没有看到所有对象的完整结构,很难说是哪个部分导致了问题,但猜测一下,我会说:gsrlObject 是 GSRL 类的一个实例,在这种情况下采取这个一出,它可能工作。尝试一次将源路径的每个部分添加为 1 部分,以查看映射的哪个部分导致问题。

【讨论】:

    猜你喜欢
    • 2018-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-12
    • 2012-10-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多