如何在java中定义JAXB中的ID?

如何在java中定义JAXB中的ID?,java,xml,jaxb,Java,Xml,Jaxb,我有两个类(层,图像)这个类有ID,每个ID都是唯一的ID(ID不能重复),当我使用JAXB将我的类解析为XML时注意到ID是重复的,我不能允许插入相同的ID 图层类别: @XmlRootElement(name="Project") public class Layer { private String id; private Image[] images; @XmlID @XmlAttribute(name="id") public String ge

我有两个类(层,图像)这个类有ID,每个ID都是唯一的ID(ID不能重复),当我使用JAXB将我的类解析为XML时注意到ID是重复的,我不能允许插入相同的ID

图层类别:

@XmlRootElement(name="Project")
public class Layer {
    private String id;
    private Image[] images;
    @XmlID
    @XmlAttribute(name="id")
    public String getId() {
       return id;
    }
    public void setId(String id) {
       this.id = id;
    }
    @XmlElement(name="images")
    public Image[] getImages() {
       return images;
    }

    public void setImages(Image[] images) {
       this.images = images;
    }
}
图像类别:

public class Image {
   private String id;
   @XmlID
   @XmlAttribute(name="id")
     public String getId() {
        return id;
    }
     public void setId(String id) {
        this.id = id;
    }
}
结果是:

<project>
 <layer id="1">//I don't want repeated ID layer 
   <images id="1">// I don't want repeated ID in in same layer tag
    </images>
   <images id="1">
    </images>
 </layer>
 <layer id="1">//here not 2 not 1, if code understand this is ID that mean give me error or massage 
   <images id="1">
    </images>
   <images id="1">
    </images>
 </layer>
</project>

//我不想要重复的ID层
//我不希望在同一层标签中重复ID
//这里不是2不是1,如果代码理解这是ID,这意味着给我错误或按摩

在JAXB中,
@XmlID
注释不用于强制唯一性。这只意味着映射的字段/属性对应于
xs:ID
类型

注意:


如果您从模型生成了一个XML模式,并在
解组器上设置该模式以启用验证(请参见:),那么如果在具有相同值的文档中有多个
xs:ID
类型的节点,则会出现验证错误。

如果序列化XML,然后生成id,正确设置id是代码的责任,jaxb不会为您这样做。这意味着每次我在插入id之后创建从xml获取最后一个id的方法,以及如何将所有角色放在相同的位置maxOccurs=“1”或..抱歉,我不明白。我有数据库XMl,这个数据库有ID,但我在JAXB中搜索关键字,但在我的XMl中滚动到相同的滚动,该滚动放在模式XMl中相同的“maxOccurs=1,我的允许我的标记一次被认可”,但在JAXB中我不知道如何。