java - How to use inheritance in jaxb? -


i have abstract class address, , 2 classes inherit class address..

classa , classb.

so found in google annotation @xmlseealso used this, don´t know if it´s correct...

because stacktrace prints error

com.sun.xml.internal.bind.v2.runtime.illegalannotationsexception: 11 counts of illegalannotationexceptions class has 2 properties of same name "bairro"     problem related following location:         @ public java.lang.string nfeproc.nfe.infnfe.endereco.getbairro()         @ nfeproc.nfe.infnfe.endereco         @ private nfeproc.nfe.infnfe.endereco nfeproc.nfe.infnfe.emit.emitente.endereco         @ nfeproc.nfe.infnfe.emit.emitente         @ private nfeproc.nfe.infnfe.emit.emitente nfeproc.nfe.infnfe.infnfe.emitente         @ nfeproc.nfe.infnfe.infnfe         @ private nfeproc.nfe.infnfe.infnfe nfeproc.nfe.nfe.infnfe         @ nfeproc.nfe.nfe         @ private nfeproc.nfe.nfe nfeproc.nfeproc.nfe         @ nfeproc.nfeproc     problem related following location:         @ private java.lang.string nfeproc.nfe.infnfe.endereco.bairro         @ nfeproc.nfe.infnfe.endereco         @ private nfeproc.nfe.infnfe.endereco nfeproc.nfe.infnfe.emit.emitente.endereco         @ nfeproc.nfe.infnfe.emit.emitente         @ private nfeproc.nfe.infnfe.emit.emitente nfeproc.nfe.infnfe.infnfe.emitente         @ nfeproc.nfe.infnfe.infnfe         @ private nfeproc.nfe.infnfe.infnfe nfeproc.nfe.nfe.infnfe         @ nfeproc.nfe.nfe         @ private nfeproc.nfe.nfe nfeproc.nfeproc.nfe         @ nfeproc.nfeproc class has 2 properties of same name "cep"     problem related following location:         @ public java.lang.string nfeproc.nfe.infnfe.endereco.getcep()         @ nfeproc.nfe.infnfe.endereco         @ private nfeproc.nfe.infnfe.endereco nfeproc.nfe.infnfe.emit.emitente.endereco         @ nfeproc.nfe.infnfe.emit.emitente         @ private nfeproc.nfe.infnfe.emit.emitente nfeproc.nfe.infnfe.infnfe.emitente         @ nfeproc.nfe.infnfe.infnfe         @ private nfeproc.nfe.infnfe.infnfe nfeproc.nfe.nfe.infnfe         @ nfeproc.nfe.nfe         @ private nfeproc.nfe.nfe nfeproc.nfeproc.nfe         @ nfeproc.nfeproc     problem related following location:         @ private java.lang.string nfeproc.nfe.infnfe.endereco.cep         @ nfeproc.nfe.infnfe.endereco         @ private nfeproc.nfe.infnfe.endereco nfeproc.nfe.infnfe.emit.emitente.endereco         @ nfeproc.nfe.infnfe.emit.emitente         @ private nfeproc.nfe.infnfe.emit.emitente nfeproc.nfe.infnfe.infnfe.emitente         @ nfeproc.nfe.infnfe.infnfe         @ private nfeproc.nfe.infnfe.infnfe nfeproc.nfe.nfe.infnfe         @ nfeproc.nfe.nfe         @ private nfeproc.nfe.nfe nfeproc.nfeproc.nfe         @ nfeproc.nfeproc class has 2 properties of same name "codigomunicipio"     problem related following location:         @ public java.lang.string nfeproc.nfe.infnfe.endereco.getcodigomunicipio()         @ nfeproc.nfe.infnfe.endereco         @ private nfeproc.nfe.infnfe.endereco nfeproc.nfe.infnfe.emit.emitente.endereco         @ nfeproc.nfe.infnfe.emit.emitente         @ private nfeproc.nfe.infnfe.emit.emitente nfeproc.nfe.infnfe.infnfe.emitente         @ nfeproc.nfe.infnfe.infnfe         @ private nfeproc.nfe.infnfe.infnfe nfeproc.nfe.nfe.infnfe         @ nfeproc.nfe.nfe         @ private nfeproc.nfe.nfe nfeproc.nfeproc.nfe         @ nfeproc.nfeproc     problem related following location:         @ private java.lang.string nfeproc.nfe.infnfe.endereco.codigomunicipio         @ nfeproc.nfe.infnfe.endereco         @ private nfeproc.nfe.infnfe.endereco nfeproc.nfe.infnfe.emit.emitente.endereco         @ nfeproc.nfe.infnfe.emit.emitente         @ private nfeproc.nfe.infnfe.emit.emitente nfeproc.nfe.infnfe.infnfe.emitente         @ nfeproc.nfe.infnfe.infnfe         @ private nfeproc.nfe.infnfe.infnfe nfeproc.nfe.nfe.infnfe         @ nfeproc.nfe.nfe         @ private nfeproc.nfe.nfe nfeproc.nfeproc.nfe         @ nfeproc.nfeproc class has 2 properties of same name "codigopais"     problem related following location:         @ public java.lang.string nfeproc.nfe.infnfe.endereco.getcodigopais()         @ nfeproc.nfe.infnfe.endereco         @ private nfeproc.nfe.infnfe.endereco nfeproc.nfe.infnfe.emit.emitente.endereco         @ nfeproc.nfe.infnfe.emit.emitente         @ private nfeproc.nfe.infnfe.emit.emitente nfeproc.nfe.infnfe.infnfe.emitente         @ nfeproc.nfe.infnfe.infnfe         @ private nfeproc.nfe.infnfe.infnfe nfeproc.nfe.nfe.infnfe         @ nfeproc.nfe.nfe         @ private nfeproc.nfe.nfe nfeproc.nfeproc.nfe         @ nfeproc.nfeproc     problem related following location:         @ private java.lang.string nfeproc.nfe.infnfe.endereco.codigopais         @ nfeproc.nfe.infnfe.endereco         @ private nfeproc.nfe.infnfe.endereco nfeproc.nfe.infnfe.emit.emitente.endereco         @ nfeproc.nfe.infnfe.emit.emitente         @ private nfeproc.nfe.infnfe.emit.emitente nfeproc.nfe.infnfe.infnfe.emitente         @ nfeproc.nfe.infnfe.infnfe         @ private nfeproc.nfe.infnfe.infnfe nfeproc.nfe.nfe.infnfe         @ nfeproc.nfe.nfe         @ private nfeproc.nfe.nfe nfeproc.nfeproc.nfe         @ nfeproc.nfeproc class has 2 properties of same name "complemento"     problem related following location:         @ public java.lang.string nfeproc.nfe.infnfe.endereco.getcomplemento()         @ nfeproc.nfe.infnfe.endereco         @ private nfeproc.nfe.infnfe.endereco nfeproc.nfe.infnfe.emit.emitente.endereco         @ nfeproc.nfe.infnfe.emit.emitente         @ private nfeproc.nfe.infnfe.emit.emitente nfeproc.nfe.infnfe.infnfe.emitente         @ nfeproc.nfe.infnfe.infnfe         @ private nfeproc.nfe.infnfe.infnfe nfeproc.nfe.nfe.infnfe         @ nfeproc.nfe.nfe         @ private nfeproc.nfe.nfe nfeproc.nfeproc.nfe         @ nfeproc.nfeproc     problem related following location:         @ private java.lang.string nfeproc.nfe.infnfe.endereco.complemento         @ nfeproc.nfe.infnfe.endereco         @ private nfeproc.nfe.infnfe.endereco nfeproc.nfe.infnfe.emit.emitente.endereco         @ nfeproc.nfe.infnfe.emit.emitente         @ private nfeproc.nfe.infnfe.emit.emitente nfeproc.nfe.infnfe.infnfe.emitente         @ nfeproc.nfe.infnfe.infnfe         @ private nfeproc.nfe.infnfe.infnfe nfeproc.nfe.nfe.infnfe         @ nfeproc.nfe.nfe         @ private nfeproc.nfe.nfe nfeproc.nfeproc.nfe         @ nfeproc.nfeproc class has 2 properties of same name "logradouro"     problem related following location:         @ public java.lang.string nfeproc.nfe.infnfe.endereco.getlogradouro()         @ nfeproc.nfe.infnfe.endereco         @ private nfeproc.nfe.infnfe.endereco nfeproc.nfe.infnfe.emit.emitente.endereco         @ nfeproc.nfe.infnfe.emit.emitente         @ private nfeproc.nfe.infnfe.emit.emitente nfeproc.nfe.infnfe.infnfe.emitente         @ nfeproc.nfe.infnfe.infnfe         @ private nfeproc.nfe.infnfe.infnfe nfeproc.nfe.nfe.infnfe         @ nfeproc.nfe.nfe         @ private nfeproc.nfe.nfe nfeproc.nfeproc.nfe         @ nfeproc.nfeproc     problem related following location:         @ private java.lang.string nfeproc.nfe.infnfe.endereco.logradouro         @ nfeproc.nfe.infnfe.endereco         @ private nfeproc.nfe.infnfe.endereco nfeproc.nfe.infnfe.emit.emitente.endereco         @ nfeproc.nfe.infnfe.emit.emitente         @ private nfeproc.nfe.infnfe.emit.emitente nfeproc.nfe.infnfe.infnfe.emitente         @ nfeproc.nfe.infnfe.infnfe         @ private nfeproc.nfe.infnfe.infnfe nfeproc.nfe.nfe.infnfe         @ nfeproc.nfe.nfe         @ private nfeproc.nfe.nfe nfeproc.nfeproc.nfe         @ nfeproc.nfeproc class has 2 properties of same name "municipio"     problem related following location:         @ public java.lang.string nfeproc.nfe.infnfe.endereco.getmunicipio()         @ nfeproc.nfe.infnfe.endereco         @ private nfeproc.nfe.infnfe.endereco nfeproc.nfe.infnfe.emit.emitente.endereco         @ nfeproc.nfe.infnfe.emit.emitente         @ private nfeproc.nfe.infnfe.emit.emitente nfeproc.nfe.infnfe.infnfe.emitente         @ nfeproc.nfe.infnfe.infnfe         @ private nfeproc.nfe.infnfe.infnfe nfeproc.nfe.nfe.infnfe         @ nfeproc.nfe.nfe         @ private nfeproc.nfe.nfe nfeproc.nfeproc.nfe         @ nfeproc.nfeproc     problem related following location:         @ private java.lang.string nfeproc.nfe.infnfe.endereco.municipio         @ nfeproc.nfe.infnfe.endereco         @ private nfeproc.nfe.infnfe.endereco nfeproc.nfe.infnfe.emit.emitente.endereco         @ nfeproc.nfe.infnfe.emit.emitente         @ private nfeproc.nfe.infnfe.emit.emitente nfeproc.nfe.infnfe.infnfe.emitente         @ nfeproc.nfe.infnfe.infnfe         @ private nfeproc.nfe.infnfe.infnfe nfeproc.nfe.nfe.infnfe         @ nfeproc.nfe.nfe         @ private nfeproc.nfe.nfe nfeproc.nfeproc.nfe         @ nfeproc.nfeproc class has 2 properties of same name "numero"     problem related following location:         @ public java.lang.string nfeproc.nfe.infnfe.endereco.getnumero()         @ nfeproc.nfe.infnfe.endereco         @ private nfeproc.nfe.infnfe.endereco nfeproc.nfe.infnfe.emit.emitente.endereco         @ nfeproc.nfe.infnfe.emit.emitente         @ private nfeproc.nfe.infnfe.emit.emitente nfeproc.nfe.infnfe.infnfe.emitente         @ nfeproc.nfe.infnfe.infnfe         @ private nfeproc.nfe.infnfe.infnfe nfeproc.nfe.nfe.infnfe         @ nfeproc.nfe.nfe         @ private nfeproc.nfe.nfe nfeproc.nfeproc.nfe         @ nfeproc.nfeproc     problem related following location:         @ private java.lang.string nfeproc.nfe.infnfe.endereco.numero         @ nfeproc.nfe.infnfe.endereco         @ private nfeproc.nfe.infnfe.endereco nfeproc.nfe.infnfe.emit.emitente.endereco         @ nfeproc.nfe.infnfe.emit.emitente         @ private nfeproc.nfe.infnfe.emit.emitente nfeproc.nfe.infnfe.infnfe.emitente         @ nfeproc.nfe.infnfe.infnfe         @ private nfeproc.nfe.infnfe.infnfe nfeproc.nfe.nfe.infnfe         @ nfeproc.nfe.nfe         @ private nfeproc.nfe.nfe nfeproc.nfeproc.nfe         @ nfeproc.nfeproc class has 2 properties of same name "pais"     problem related following location:         @ public java.lang.string nfeproc.nfe.infnfe.endereco.getpais()         @ nfeproc.nfe.infnfe.endereco         @ private nfeproc.nfe.infnfe.endereco nfeproc.nfe.infnfe.emit.emitente.endereco         @ nfeproc.nfe.infnfe.emit.emitente         @ private nfeproc.nfe.infnfe.emit.emitente nfeproc.nfe.infnfe.infnfe.emitente         @ nfeproc.nfe.infnfe.infnfe         @ private nfeproc.nfe.infnfe.infnfe nfeproc.nfe.nfe.infnfe         @ nfeproc.nfe.nfe         @ private nfeproc.nfe.nfe nfeproc.nfeproc.nfe         @ nfeproc.nfeproc     problem related following location:         @ private java.lang.string nfeproc.nfe.infnfe.endereco.pais         @ nfeproc.nfe.infnfe.endereco         @ private nfeproc.nfe.infnfe.endereco nfeproc.nfe.infnfe.emit.emitente.endereco         @ nfeproc.nfe.infnfe.emit.emitente         @ private nfeproc.nfe.infnfe.emit.emitente nfeproc.nfe.infnfe.infnfe.emitente         @ nfeproc.nfe.infnfe.infnfe         @ private nfeproc.nfe.infnfe.infnfe nfeproc.nfe.nfe.infnfe         @ nfeproc.nfe.nfe         @ private nfeproc.nfe.nfe nfeproc.nfeproc.nfe         @ nfeproc.nfeproc class has 2 properties of same name "telefone"     problem related following location:         @ public java.lang.string nfeproc.nfe.infnfe.endereco.gettelefone()         @ nfeproc.nfe.infnfe.endereco         @ private nfeproc.nfe.infnfe.endereco nfeproc.nfe.infnfe.emit.emitente.endereco         @ nfeproc.nfe.infnfe.emit.emitente         @ private nfeproc.nfe.infnfe.emit.emitente nfeproc.nfe.infnfe.infnfe.emitente         @ nfeproc.nfe.infnfe.infnfe         @ private nfeproc.nfe.infnfe.infnfe nfeproc.nfe.nfe.infnfe         @ nfeproc.nfe.nfe         @ private nfeproc.nfe.nfe nfeproc.nfeproc.nfe         @ nfeproc.nfeproc     problem related following location:         @ private java.lang.string nfeproc.nfe.infnfe.endereco.telefone         @ nfeproc.nfe.infnfe.endereco         @ private nfeproc.nfe.infnfe.endereco nfeproc.nfe.infnfe.emit.emitente.endereco         @ nfeproc.nfe.infnfe.emit.emitente         @ private nfeproc.nfe.infnfe.emit.emitente nfeproc.nfe.infnfe.infnfe.emitente         @ nfeproc.nfe.infnfe.infnfe         @ private nfeproc.nfe.infnfe.infnfe nfeproc.nfe.nfe.infnfe         @ nfeproc.nfe.nfe         @ private nfeproc.nfe.nfe nfeproc.nfeproc.nfe         @ nfeproc.nfeproc class has 2 properties of same name "uf"     problem related following location:         @ public java.lang.string nfeproc.nfe.infnfe.endereco.getuf()         @ nfeproc.nfe.infnfe.endereco         @ private nfeproc.nfe.infnfe.endereco nfeproc.nfe.infnfe.emit.emitente.endereco         @ nfeproc.nfe.infnfe.emit.emitente         @ private nfeproc.nfe.infnfe.emit.emitente nfeproc.nfe.infnfe.infnfe.emitente         @ nfeproc.nfe.infnfe.infnfe         @ private nfeproc.nfe.infnfe.infnfe nfeproc.nfe.nfe.infnfe         @ nfeproc.nfe.nfe         @ private nfeproc.nfe.nfe nfeproc.nfeproc.nfe         @ nfeproc.nfeproc     problem related following location:         @ private java.lang.string nfeproc.nfe.infnfe.endereco.uf         @ nfeproc.nfe.infnfe.endereco         @ private nfeproc.nfe.infnfe.endereco nfeproc.nfe.infnfe.emit.emitente.endereco         @ nfeproc.nfe.infnfe.emit.emitente         @ private nfeproc.nfe.infnfe.emit.emitente nfeproc.nfe.infnfe.infnfe.emitente         @ nfeproc.nfe.infnfe.infnfe         @ private nfeproc.nfe.infnfe.infnfe nfeproc.nfe.nfe.infnfe         @ nfeproc.nfe.nfe         @ private nfeproc.nfe.nfe nfeproc.nfeproc.nfe         @ nfeproc.nfeproc      @ com.sun.xml.internal.bind.v2.runtime.illegalannotationsexception$builder.check(unknown source)     @ com.sun.xml.internal.bind.v2.runtime.jaxbcontextimpl.gettypeinfoset(unknown source)     @ com.sun.xml.internal.bind.v2.runtime.jaxbcontextimpl.<init>(unknown source)     @ com.sun.xml.internal.bind.v2.runtime.jaxbcontextimpl.<init>(unknown source)     @ com.sun.xml.internal.bind.v2.runtime.jaxbcontextimpl$jaxbcontextbuilder.build(unknown source)     @ com.sun.xml.internal.bind.v2.contextfactory.createcontext(unknown source)     @ sun.reflect.nativemethodaccessorimpl.invoke0(native method)     @ sun.reflect.nativemethodaccessorimpl.invoke(unknown source)     @ sun.reflect.delegatingmethodaccessorimpl.invoke(unknown source)     @ java.lang.reflect.method.invoke(unknown source)     @ javax.xml.bind.contextfinder.newinstance(unknown source)     @ javax.xml.bind.contextfinder.newinstance(unknown source)     @ javax.xml.bind.contextfinder.find(unknown source)     @ javax.xml.bind.jaxbcontext.newinstance(unknown source)     @ javax.xml.bind.jaxbcontext.newinstance(unknown source)     @ nfeproc.teste.main(teste.java:15) 

so what´s wrong?

update

put code in pastebin.. explain you, classes emitente , destinatario have field endereco (adress) from enderecoemitente , enderecodestinario , extends endereco http://pastebin.com/db0m3rg5

using code on paste bin had add @xmlaccessortype(xmlaccesstype.field) theendereco` work correctly (since class has annotated fields).

@xmlaccessortype(xmlaccesstype.field) public class endereco { 

problem

the problem encountering isn't related inheritance fact have annotated field instead of property. default jaxb implementation treat public properties , annotated fields mapped (see: http://blog.bdoughan.com/2011/06/using-jaxbs-xmlaccessortype-to.html), causing conflict in use case:

class has 2 properties of same name "pais"     problem related following location:         @ public java.lang.string nfeproc.nfe.infnfe.endereco.getpais()         @ nfeproc.nfe.infnfe.endereco         @ private nfeproc.nfe.infnfe.endereco nfeproc.nfe.infnfe.emit.emitente.endereco         @ nfeproc.nfe.infnfe.emit.emitente         @ private nfeproc.nfe.infnfe.emit.emitente nfeproc.nfe.infnfe.infnfe.emitente         @ nfeproc.nfe.infnfe.infnfe         @ private nfeproc.nfe.infnfe.infnfe nfeproc.nfe.nfe.infnfe         @ nfeproc.nfe.nfe         @ private nfeproc.nfe.nfe nfeproc.nfeproc.nfe         @ nfeproc.nfeproc     problem related following location:         @ private java.lang.string nfeproc.nfe.infnfe.endereco.pais         @ nfeproc.nfe.infnfe.endereco         @ private nfeproc.nfe.infnfe.endereco nfeproc.nfe.infnfe.emit.emitente.endereco         @ nfeproc.nfe.infnfe.emit.emitente         @ private nfeproc.nfe.infnfe.emit.emitente nfeproc.nfe.infnfe.infnfe.emitente         @ nfeproc.nfe.infnfe.infnfe         @ private nfeproc.nfe.infnfe.infnfe nfeproc.nfe.nfe.infnfe         @ nfeproc.nfe.nfe         @ private nfeproc.nfe.nfe nfeproc.nfeproc.nfe         @ nfeproc.nfeproc 

solution

the solution either annotate get method (or set method), or annotate field , specify @xmlaccessortype(xmlaccesstype.field) @ class or package level.

jaxb & inheritance

i have written lot jaxb , inheritance, may find following helpful:


Comments

Popular posts from this blog

How to remove text and logo OR add Overflow on Android ActionBar using AppCompat on API 8? -

html - How to style widget with post count different than without post count -

url rewriting - How to redirect a http POST with urlrewritefilter -