Hybris 和 Orika 空指针

Hybris and Orika Nullpointer

我正在使用 Hybris 和 Orika。
将 WsDto 转换为数据时出现 NullpointerException。
这是一个例外:

Caused by: java.lang.NullPointerException
    at ma.glasnost.orika.generated.Orika_OrderWsDTO_OrderData_Mapper153858392176009.mapBtoA(Orika_OrderWsDTO_OrderData_Mapper153858392176009.java)
    at ma.glasnost.orika.impl.ReversedMapper.mapAtoB(ReversedMapper.java:65)
    at ma.glasnost.orika.impl.mapping.strategy.UseCustomMapperStrategy.map(UseCustomMapperStrategy.java:77)
    at ma.glasnost.orika.impl.DefaultBoundMapperFacade.mapReverse(DefaultBoundMapperFacade.java:152)
    at ma.glasnost.orika.generated.Orika_ReturnRequestWsDTO_ReturnRequestData_Mapper15384183367700.mapBtoA(Orika_ReturnRequestWsDTO_ReturnRequestData_Mapper15384183367700.java)
    at ma.glasnost.orika.impl.ReversedMapper.mapAtoB(ReversedMapper.java:65)
    at ma.glasnost.orika.impl.mapping.strategy.UseCustomMapperStrategy.map(UseCustomMapperStrategy.java:77)
    at ma.glasnost.orika.impl.MapperFacadeImpl.map(MapperFacadeImpl.java:671)
    ... 146 more

问题 - 它发生在生成的 class 中,因此很难调试。
我还尝试为 Orika 启用代码生成以检查 classes,但由于某种原因,该配置不适用。我是这样做的:

tomcat.debugjavaoptions= -Dma.glasnost.orika.writeSourceFiles=true -Dma.glasnost.orika.writeClassFiles=true

我的问题是:

调试模式下的异常没有向我提供数据。

更新
发现问题来自于字段映射,在 XML 中是这样完成的:

<bean parent="fieldMapper" id="cisOrderWsDTOFieldMapper">
<property name="sourceClass" value="Data" />
<property name="destClass" value="WsDto" />
<property name="fieldMapping">
    <map>
        <entry key="price.discount" value="discount"/>                
    </map>
</property>
当 Data 映射到 WsDto 时没有问题,但是当 WsDto 映射到 Data 时出现空指针异常。 你能帮我弄清楚如何为此更好地配置双向映射吗?

在使用 Intellij 的调试模式下,您可以按类型捕获任何异常,并轻松查看导致问题的字段。

问题是因为映射配置:

<bean parent="fieldMapper" id="cisOrderWsDTOFieldMapper">
<property name="sourceClass" value="Data" />
<property name="destClass" value="WsDto" />
<property name="fieldMapping">
    <map>
        <entry key="price.discount" value="discount"/>                
    </map>
</property>

为此创建了自定义映射器(扩展 de.hybris.platform.webservicescommons.mapping.mappers.AbstractCustomMapper)并解决了一个问题。
这个问题发生在 Hybris + Orika 中,因为干净的 Orika(在 Hybris 之外)无法重现这个问题。