Oracle
 sql >> Database >  >> RDS >> Oracle

Perché e quando JAXBElement è richiesto in JAXB?

Ci sono alcuni casi d'uso in cui un JAXBElement è richiesto:

  1. Un elemento è sia nillable="true" e minOccurs="0" . In questo caso cosa significa null sul campo mappato/proprietà significa? Quando la proprietà è JAXBElement un valore nullo significa che l'elemento non è presente e un JAXBElement wrapping null significa un elemento XML con xsi:nil="true" .
  2. Ci sono 2 elementi globali con lo stesso tipo complesso denominato. Poiché in JAXB le classi corrispondono a tipi complessi è necessario un modo per catturare quale elemento radice è stato incontrato. Per maggiori dettagli, vedere questo articolo ho scritto.
  3. Esiste una struttura di scelta in cui foo o bar possono verificarsi elementi e sono dello stesso tipo. Qui un JAXBElement è richiesto perché incontra semplicemente una String il valore non è sufficiente per indicare quale elemento deve essere sottoposto a marshalling.
  4. Un elemento con xsi:nil si incontra nel documento che contiene gli attributi. In questo esempio l'oggetto corrispondente a quell'elemento può ancora essere deselezionato per contenere i valori degli attributi, ma JAXBElement può comunque indicare che l'elemento era nullo.