【问题标题】:Dozer mapping on objects to推土机将对象映射到
【发布时间】:2018-04-16 16:46:58
【问题描述】:

我有两个单独的对象要映射:

Class A {
    List<AA> listAA;
    // get set methods...
}

Class B{
    C objectC = new C();
    // get set methods...
}

Class C{
    List<CC> listCC;
    // get set methods...
}

Class AA{
    String aa;
    // get set methods...
}

Class CC{
     String cc;
    // get set methods...
}

所以我想将 listAA 映射到 C 内部的 listCC。C 有 B 作为父母。

我尝试将其描述为数据结构:

a.listAA -> b.c.listCC 

到目前为止我已经尝试过:

<mappings>
    <mapping>
        <class-a>mypackages.A</class-a>
        <class-b>mypackages.B</class-b>
        <field>
            <a>listAA</a>
            <b>objectC.listCC</b>
            <b-hint>mypackages.CC</b-hint>
        <field>
    </mapping>

    <mapping>
        <class-a>mypackages.AA</class-a>
        <class-b>mypackages.CC</class-b>
        <field>
            <a>aa</a>
            <b>cc</b>
        <field>
    </mapping>
</mappings>

我想是推土机不知道

objectC.listCC

作为带有 in 对象的列表。而是尝试查找名为“objectC.listCC”的属性。

它会抛出

 NullPointerException
    at org.dozer.util.ReflectionsUtils.invoke(ReflectionsUtils)
    ...

有谁知道如何解决这个问题。

问候

伊万

PS:希望我描述清楚

【问题讨论】:

  • 你能发布完整的堆栈跟踪吗?它可能有助于了解代码内部发生的情况。
  • 可能是因为您在 XML 中使用 listAlistC 而不是 listAAlistCC
  • @Vasan 是的,你是对的。我在这个问题描述上打错了。但是在我的代码中,你输入了正确的代码

标签: java dozer


【解决方案1】:

有时你不得不走出去,忘记寻找答案,然后带着新的头脑再来。 我将映射配置扩展为三个部分。因为推土机无法将对象映射到大子对象。所以你必须做类似的链式映射:

 <mappings>
    <mapping>
        <class-a>mypackages.A</class-a>
        <class-b>mypackages.B</class-b>
        <field map-id="listAAToObjectC">
            <a>listAA</a>
            <b>objectC</b>
            <b-hint>mypackages.C</b-hint>
        <field>
    </mapping>
    <mapping map-id="listAAToObjectC">
        <class-a>mypackages.A</class-a>
        <class-b>mypackages.C</class-b>
        <field map-id="listToList">
            <a>listAA/a>
            <b>listCC</b>
        <field>
    </mapping>
    <mapping map-id="listToList">
        <class-a>mypackages.AA</class-a>
        <class-b>mypackages.CC</class-b>
        <field>
            <a>aa</a>
            <b>cc</b>
        <field>
    </mapping>
</mappings>

【讨论】:

    猜你喜欢
    • 2011-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-22
    相关资源
    最近更新 更多