JAXB und Groovy

Soll die Instanz einer solchen Groovy-Klasse mit Hilfe von JAXB als XML gespeichert werden, schlägt dies mit der folgenden Fehlermeldung fehl:

groovy.lang.MetaClass is an interface, and JAXB can't handle interfaces.

JAXB ist also nicht in der Lage, das Attribut “metaClass”, das in jeder Groovy-Klasse zur Verfügung steht,  zu persistieren. Daher muss in Groovy die automatische Attributerkennung von JAXB deaktiviert und alle Attribute manuell per Annotation bekannt gemacht werden:

@XmlAccessorType(XmlAccessType.NONE)
@XmlRootElement
public class Entity {
  @XmlAttribute
  String value
}

Durch die Annotation @XmlAccessorType(XmlAccessType.NONE) wird die automatische Erkennung deaktiviert. Das Attribut value wird anschließend mit Hilfe der Annotation @XmlAttribute für JAXB markiert.

Short URL for this post: http://wp.me/p4nxik-bu
This entry was posted in Groovy and Grails, Java Persistence, XML Universe and tagged , , . Bookmark the permalink.