2017-10-26 8 views
0

DTX 모델에서 JAXB가 생성 한 JAXBElement <으로 가득 찬 데이터 모델> 래퍼 객체로의 매핑이 있습니다.Orika 팩토리가 null 값을위한 객체를 생성하지 못하도록 함

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

명칭은 다음과 같이 정의된다 : JAXBElement 첨부를 구성하는

public class Name { 
    private String value; 
} 

I는 ObjectFactory를 생성 :

는 클래스로 정의 이용시 (getter와 setter 생략)가

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 likes로 클래스 매핑을 만듭니다. 그래서 E :이 구성으로

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

가없는 이름을 가진 PersonDto의 매핑 (이름은 널 같음) 널 (null)로 설정된 값 이름 부재를 갖는 인 요소 초래할 것이다. 이것은 아마도 더 클래스 매핑을 수행 한 후 생성되는 XML을 보여줌으로써 설명 : 내 경우

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

는이 XML이 유효하지, 이름 요소가있을 때, 그 값은 항상 null 이외해야한다. XML은 따라서해야한다 :

<Person> 
</Person> 

는 null로 설정됩니다 값을 알고, 이름 개체를 구성에서 Orika을 방지 할 수 있습니까?

답변

0

명확한 마음으로 코드를 다시 읽으면 Orika가 래퍼 요소를 만들지 않는다는 것을 알았습니다 (예상하지 못했던 것처럼). 완전히 다른 문제였습니다 ...