zygimantus
zygimantus

Reputation: 3777

Can't map property when using MapStruct

I am using MapStruct library to map objects but I got this error:

Can't map property "java.util.Date aDate" to "javax.xml.bind.JAXBElement ADATE". Consider to declare/implement a mapping method: "javax.xml.bind.JAXBElement map(java.util.Date value)".

My question: WHERE should I decleare this mapping method?

Upvotes: 14

Views: 36363

Answers (2)

Gunnar
Gunnar

Reputation: 18970

There are two alternatives:

  • Make your mapper an abstract class instead of an interface and implement that method directly in the mapper class
  • Implement the method on another class and declare this one as "used" by your mapper; See the reference guide for further details

Btw. the mapping should be done automatically if you are using XMLGregorianCalendar or JAXBElement<XMLGregorianCalendar> instead of the JAXBElement raw type.

Upvotes: 12

zygimantus
zygimantus

Reputation: 3777

I solved this issue by writing another class:

public class DateMapper {

    public JAXBElement<XMLGregorianCalendar> map(Date value) {

        // conversion here

        return atswer;
    }
}

and using this annotation:

@Mapper(uses=DateMapper.class)

Upvotes: 26

Related Questions