JAXB "有兩個名為 "**" 的屬性,類的兩個屬性具有相同名稱 "**""解決方案


   

這里說的名稱沖突指的是: JavaBean 屬性名稱與字段名稱之間的名稱沖突。
在pojo類中的setter和getter方法會導致運行報錯:
Exception in thread "main" com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException:
2 counts of IllegalAnnotationExceptions
這時我們就要用到另一個注釋:@XmlTransient,用來防止映射使用@XmlTransient注釋的字段或者javabean的屬性,從而解決名稱沖突。
具體的用法是將@XmlElement和@XmlTransient分別加到javabean屬性前和對應的getter方法前:

 

 

package entity;
 import java.io.Serializable;
 
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;
 
@XmlRootElement //表示student是一個跟元素
public class Student implements Serializable {
    @XmlElement //name作為student的一個子元素
    private String name;
    @XmlElement //gender作為student的一個子元素
    private String gender;
 
    public Student() {
 
    }
 
    public Student(String name, String gender) {
        this.name = name;
        this.gender = gender;
    }
 
    @XmlTransient
    public String getName() {
        return name;
    }
 
    @XmlTransient
    public String getGender() {
        return gender;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public void setGender(String gender) {
        this.gender = gender;
    }
 
}
原文:https://blog.csdn.net/huanghanqian/article/details/51549066 


免責聲明!

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



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