解決JAXB注解 bug:Class has two properties of the same name


記錄一個bug
Class has two properties of the same name "iflight"
    this problem is related to the following location:
        at public java.lang.String com.tg.dc.pojo.Lstdetail.getIflight()
        at com.tg.dc.pojo.Lstdetail
        at public java.util.List com.tg.dc.pojo.IBEPassengerStatResponseDetail.businessreportLstdetail
        at com.tg.dc.pojo.IBEPassengerStatResponseDetail
        at public com.tg.dc.pojo.IBEPassengerStatResponseDetail com.tg.dc.pojo.PerBasicMainObject.getIBEPassengerStatResponseDetail()
        at com.tg.dc.pojo.PerBasicMainObject
    this problem is related to the following location:
        at public java.lang.String com.tg.dc.pojo.Lstdetail.iflight
        at com.tg.dc.pojo.Lstdetail
        at public java.util.List com.tg.dc.pojo.IBEPassengerStatResponseDetail.businessreportLstdetail
        at com.tg.dc.pojo.IBEPassengerStatResponseDetail
        at public com.tg.dc.pojo.IBEPassengerStatResponseDetail com.tg.dc.pojo.PerBasicMainObject.getIBEPassengerStatResponseDetail()
        at com.tg.dc.pojo.PerBasicMainObject
        
代碼如下:
@Setter
@Getter
@XmlRootElement(name = "DATA")
public class PerBasicMainObject implements Serializable{

    private IBEPassengerStatResponseDetail iBEPassengerStatResponseDetail;//
    private List<PerInvestmentFr> investmentfr;
    
    @XmlElementWrapper(name="RYPOSFR")
    @XmlElement(name="ITEM")
    public void setInvestmentfr(List<PerInvestmentFr> investmentfr) {
        this.investmentfr = investmentfr;
    }
}
iflight 是    IBEPassengerStatResponseDetail 類的 Lstdetail 類屬性的屬性,
IBEPassengerStatResponseDetail類中有的屬性需要轉為xml如:investmentfr,有的則不需要轉,如:IBEPassengerStatResponseDetail;
網上查找了下,@XmlRootElement(name = "DATA")標注在PerBasicMainObject類上,類中的field都會變成了子Element,
默認情況下,如果類中不存在 @XmlAccessorType,並且沒有任何超類是使用 @XmlAccessorType 注釋的,則假定在類中使用以下默認注釋:
@XmlAccessorType(XmlAccessType.PUBLIC_MEMBER)
XmlAccessType可能值:
FIELD:    JAXB 綁定類中的每個非靜態、非瞬態字段將會自動綁定到 XML,除非由 XmlTransient 注釋。
NONE:     所有字段或屬性都不能綁定到 XML,除非使用一些 JAXB 注釋專門對它們進行注釋。
PROPERTY: JAXB 綁定類中的每個獲取方法/設置方法對將會自動綁定到 XML,除非由 XmlTransient 注釋。
PUBLIC_MEMBER:每個公共獲取方法/設置方法對和每個公共字段將會自動綁定到 XML,除非由 XmlTransient 注釋。
所以最后在PerBasicMainObject類上標注@XmlAccessorType(XmlAccessType.NONE) 問題解決。

以下是關於JAXB注解的鏈接
http://blog.csdn.net/hongtaq/article/details/8212578
http://zhgw01.blog.163.com/blog/static/104148122010117112047695/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM