8
votes

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?

2

2 Answers

21
votes

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)
8
votes

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.