防止 Orika 工厂为空值创建对象



我有一个从DTO模型到JAXB生成的数据模型的映射,该模型充满了JAXBElement<>包装器对象。

例如,有一个类 Person 定义为 (省略了 getter 和 setter):

public class Person {
    private JAXBElement<Name> name;
}

名称定义为:

public class Name {
    private String value;
}

为了构造JAXBElement,我创建了一个ObjectFactory:

public class NameFactory extends ObjectFactory<JAXBElement<Name>> {
    protected JAXBElement<Name> createObject(@Nonnull Class<?> context) {
        // here, ObjectFactory is the JAXB generated ObjectFactory
        return new ObjectFactory().createName();
    }
}

在我的 ConfigurableMapper 中,我创建了一个从 PersonDto 到 Person 的类映射,如下所示:

factory.createClassMap(PersonDto.class, Person.class)
    .field("name", "name.value.value")
    .register;

使用此配置,没有名称(名称等于空)的 PersonDto 的映射将导致 Person 元素具有其值设置为 null 的名称成员。通过显示执行类映射后生成的 XML,可以更好地解释这一点:

<Person>
    <Name>
        <value></value>
    </Name>
</Person>

就我而言,此XML无效,当存在Name元素时,其值应始终为非null。因此,XML 应为:

<Person>
</Person>

是否可以阻止 Orika 构造 Name 对象,知道其值将设置为 null?

一天后,以清晰的头脑再次浏览代码,结果发现 Orika 没有创建包装元素(正如我预期的那样),这是一个完全不同的问题......

相关内容

  • 没有找到相关文章

最新更新