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
Post a Comment