Java 海布里斯和奥里卡

Java 海布里斯和奥里卡,java,hybris,orika,Java,Hybris,Orika,我正在使用Hybris和Orika。 将WsDto转换为数据时出现NullpointerException。 这是一个例外: Caused by: java.lang.NullPointerException at ma.glasnost.orika.generated.Orika_OrderWsDTO_OrderData_Mapper15385839217600$109.mapBtoA(Orika_OrderWsDTO_OrderData_Mapper15385839217600$10

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

Caused by: java.lang.NullPointerException
    at ma.glasnost.orika.generated.Orika_OrderWsDTO_OrderData_Mapper15385839217600$109.mapBtoA(Orika_OrderWsDTO_OrderData_Mapper15385839217600$109.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$80.mapBtoA(Orika_ReturnRequestWsDTO_ReturnRequestData_Mapper15384183367700$80.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
问题-它发生在生成的类中,因此很难调试。
我还尝试为Orika启用代码生成以检查类,但由于某些原因,该配置不适用。我是这样做的:

tomcat.debugjavaoptions= -Dma.glasnost.orika.writeSourceFiles=true -Dma.glasnost.orika.writeClassFiles=true
<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>
我的问题是:

  • 您能帮我启用此代码生成以进行进一步调试吗
  • 你能指出为什么会发生这种异常,因为目前还不清楚
调试模式下的异常不向我提供数据。

更新
发现这个问题来自字段映射,它是通过XML实现的:

tomcat.debugjavaoptions= -Dma.glasnost.orika.writeSourceFiles=true -Dma.glasnost.orika.writeClassFiles=true
<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>

当数据映射到WsDto时没有问题,但当WsDto映射到数据时存在空指针异常。 您能帮我找出如何更好地为此配置双向映射吗?
在使用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中,因为clean Orika(Hybris之外)无法重现此问题。

不幸的是,调试模式下没有数据可以帮助我找到根本原因。附加屏幕截图。你能分享更长的stacktrace吗?在那之前和之后还有更多吗?不幸的是,这是我所有的和所有记录的。日志的另一部分与Spring的控制器/过滤器有关,因此我提交了它。这就是为什么我想知道如何启用类的构建,以便能够挖掘更多信息。