Raupen-mapping von java.lang.Datum (als Map-Feld) XMLGregorianCalendar

Ich habe eine xml-Zuordnung definiert:

<mapping>
    <class-a>java.util.HashMap</class-a>
    <class-b>com.example.MyClass</class-b>
    <field>
        <a key=&quot;myDateField&quot;>this</a>
        <b>myXMLGregorianCalendarField</b>
    </field>
</mapping>

Hier Wert für den Schlüssel myDateField enthält Instanz von java.lang.Date class.
Feld com.example.MyClass#myXMLGregorianCalendarField erwartet Instanz von javax.xml.datatype.XMLGregorianCalendar.

Diese Zuordnung wirft immer eine exception:

MapId: null
Type: null
Source parent class: java.util.HashMap
Source field name: this
Source field type: class java.util.Date
Source field value: Thu Jan 01 03:00:00 MSK 1970
Dest parent class: com.example.MyClass
Dest field name: myXMLGregorianCalendarField
Dest field type: javax.xml.datatype.XMLGregorianCalendar
org.dozer.MappingException: Illegal object type for the method 'setMyXMLGregorianCalendarField'. 
Expected types: 
    javax.xml.datatype.XMLGregorianCalendar
Actual types: 
    java.util.Date

, Wie man diese Umwandlung richtig funktioniert?

Hinweis
Lange-lange-debugging ergab, dass primitive Wandler sind unterschiedlich bezeichnet für die Karten und der "nicht-Karten". So, hier kommt die zweite Frage: warum?

  • Sagen Sie, dass die Konvertierung funktioniert nur, wenn die Date ist nicht eine Karte Feld?
  • Yep, u got it right. Die Umwandlung funktioniert nur gut, wenn Date ist nicht ein Map Feld.
Schreibe einen Kommentar