2011-10-10 5 views

risposta

10

Come da @ commento Tomasz-nurkiewicz dovrei usare @XmlTransient annotazione. Tuttavia, come indicato nella documentazione

Per impostazione predefinita, se @XmlAccessorType su una classe è assente, e nessuna delle sue classi Super è annotato con @XmlAccessorType, allora la seguente impostazione predefinita sulla classe si presume:

@ XmlAccessorType (XmlAccessType.PUBLIC_MEMBER)

Dove XmlAccessType.PUBLIC_MEMBER significa che:

ogni getter pubblico/pair setter e ogni unità di elaborazione il campo blic verrà automaticamente associato a XML, a meno che annotato da XmlTransient. I campi o le coppie getter/setter private, protette o predefinite all'accesso al solo pacchetto sono associati all'XML solo quando sono annotati esplicitamente dalle annotazioni JAXB appropriate.

Quindi questo è il motivo per cui @XmlTransient per il campo privato non funziona in esempio da Tomasz Nurkiewicz. Ci sono due modi possibili per risolvere questo:

1) Aggiungi annotazione getter pubblico:

private String password; 

@XmlTransient 
public String getPassword() { 
    return password; 
} 

2) Aggiungi @XmlAccessorType in classe:

@XmlAccessorType(XmlAccessType.FIELD) 
public User { 

    @XmlTransient 
    private String password; 

} 

disponibili all'indirizzo: http://old.nabble.com/@XmlTransient-ignored-td7406659.html

4

Presumo che si stia utilizzando JAXB per il mapping XML degli oggetti. In tal caso è sufficiente annotare i campi che si desidera saltare nell'entità database con @XmlTransient.

@XmlTransient 
private String password; 

Tuttavia notare che un giorno vi renderete conto che si bisogno una classe temporanea soprattutto per disaccoppiare il servizio web CXF dal backend. Dopo tutto quello che non si vuole ricordare per tutto il tempo che l'aggiunta di una colonna nel database rompe immediatamente l'interfaccia SOAP ...

+0

I Non sono sicuro di cosa io usi, perché ho solo aggiunto 'cxf-rt-frontend-jaxws' e' cxf-rt-transports-http' al mio 'pom.xml' per usare CXF. Ma vedo 'jaxb-impl-2.1.13.jar' e' cxf-rt-databinding-jaxb-2.4.3.jar' nel mio pacchetto WAR, quindi sembra che tu abbia ragione. Ho provato a usare '@ XmlTransient' senza fortuna :(Ho anche aggiunto' @ XmlRootElement' a tutta la classe, ma non è cambiato nulla.Hai un altro suggerimento? –

+0

Ciao di nuovo! Io googlando e faccio poca ricerca e ho trovato come risolvere il mio problema Vedi il mio aggiornamento, inoltre investo la tua risposta perché mi aiuta a trovare la soluzione giusta. Grazie! –

Problemi correlati