@XmlTransient
當使用@XmlTransient標記字段/屬性時,您明確地告訴您的JAXB實現將其視為未映射的屬性。 當少于一半的字段/屬性未映射時,這很有用。
package blog.unmapped;import java.util.List;
import javax.xml.bind.annotation.*;@XmlAccessorType(XmlAccessType.FIELD)
public class Customer {@XmlTransientprivate int id;private String firstName;private String lastName;private Address billingAddress;private Address shippingAddress;private List<PhoneNumber> phoneNumbers;}
如果未映射一半以上的字段/屬性,則由于異常,我們將停止獲得配置的好處,因為與映射映射的屬性相比,我們需要做更多的工作以使用@XmlTransient排除屬性。 接下來,我將演示如何在此用例中利用@XmlAccessorType(XmlAccessType.NONE)。
package blog.unmapped;import java.util.List;
import javax.xml.bind.annotation.*;@XmlAccessorType(XmlAccessType.FIELD)
public class Customer {@XmlTransientprivate int id;private String firstName;private String lastName;@XmlTransientprivate Address billingAddress;@XmlTransientprivate Address shippingAddress;@XmlTransientprivate List<PhoneNumber> phoneNumbers;}
@XmlAccessorType(XmlAccessType.NONE)
通過設置@XmlAccessorType(XmlAccessType.NONE),我們將通過例外禁用配置。 現在,將僅映射顯式映射的屬性。 當少于一半的域對象的字段/屬性被映射時,這很有用。
package blog.unmapped;import java.util.List;
import javax.xml.bind.annotation.*;@XmlAccessorType(XmlAccessType.FIELD)
public class Customer {@XmlTransientprivate int id;private String firstName;private String lastName;@XmlTransientprivate Address billingAddress;@XmlTransientprivate Address shippingAddress;@XmlTransientprivate List<PhoneNumber> phoneNumbers;}
進一步閱讀
如果您喜歡這篇文章,那么您還喜歡:
- 使用JAXB的@XmlAccessorType配置字段或屬性訪問
- 使用@XmlTransient忽略繼承
Java XML和JSON綁定博客中的JCG合作伙伴 Blaise Doughan的參考: JAXB和未映射的屬性 。
翻譯自: https://www.javacodegeeks.com/2012/04/jaxb-and-unmapped-properties.html