2015-04-10 32 views
6

Zgodnie z https://gist.github.com/VineetReynolds/5108580, JAXB Spec wymaga, aby element oznaczony @XmlID był oznaczony jako . To nie zostało wymuszone przez MOXy w wersjach 2.5.x.
W przypadku wersji 2.6.0 wydaje się jednak, że nie jest już obsługiwana.Czy funkcja MOXy obsługuje nieszynowy @XmlID w wersji 2.6.0?

[Exception [EclipseLink-50016] (Eclipse Persistence Services - 2.6.0.v20150309-bf26070): org.eclipse.persistence.exceptions.JAXBException 
Exception Description: Property [id] has an XmlID annotation but its type is not String.]**strong text** 

Czy jest to pożądane zachowanie, czy niechciana regresja?

Jaki jest najlepszy sposób na uniknięcie takiego błędu podczas migracji z MOXy 2.5.x?
jest stosowanie @XmlJavaTypeAdapter jak opisane w tym poście Marshaling a long primitive type using JAXB, co wpływa również na sposób w jaki sam (i jego ID) obiekt zostanie odcinkach do JSON (np pole id typu Long staje ciąg json?

Odpowiedz

6

Tak , jest nadal obsługiwany. W 2.6.0 nie jest obsługiwane domyślnie, ale musi być włączony poprzez @XmlIDExtension adnotacji.

https://eclipse.org/eclipselink/releases/2.6.php

Wystarczy opisywanie danego pola z @XmlIDExtension. możliwe jest także określenie właściwości systemu org.eclipse.persistence.moxy.annotation.xml-id-extension także zachowaj domyślne zachowanie na całym świecie.

+0

Wielkie dzięki! Z jakiegoś powodu nie mogłem znaleźć informacji zawartych w informacjach o wydaniu. –