You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JAXB IllegalAnnotationsException错误:@XmlValue与XmlElement冲突求助

解决org.glassfish.jaxb.runtime.v2.runtime.IllegalAnnotationsException异常

问题原因

JAXB的规则明确:如果类中有字段被@XmlValue标注,那么这个类不能同时存在其他被映射为XML元素(@XmlElement)的属性。你的Objectif类因为配置了@XmlAccessorType(XmlAccessType.FIELD),所有字段默认都会被JAXB处理成XML元素,其中id和cv24字段就成了隐含的@XmlElement,和被@XmlValue标注的value字段冲突,触发了异常。

解决方案

把不需要映射到XML的字段(id和cv24)用@XmlTransient标注,让JAXB忽略它们,只保留value的@XmlValue和statut的@XmlAttribute配置,就能生成你期望的XML格式。

修改后的Objectif类代码:

import jakarta.xml.bind.annotation.*;
import jakarta.persistence.*;

@Entity
@XmlAccessorType(XmlAccessType.FIELD)
public class Objectif {
     
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @XmlTransient // 让JAXB忽略该字段
    private Long id; 
    
    @Column(name = "value")
    @XmlValue
    private String value;

    @XmlAttribute(name = "statut", required = true)
    @Column(name = "statut")
    private String statut;

    @ManyToOne
    @JoinColumn(name = "cv24_id")
    @XmlTransient // 让JAXB忽略该字段
    private CV24 cv24;

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }

    public String getStatut() {
        return statut;
    }

    public void setStatut(String statut) {
        this.statut = statut;
    }
}

效果验证

修改后,JAXB会生成你期望的XML格式:

<objectif statut="Stage">Dev</objectif>

内容的提问来源于stack exchange,提问作者user23352261

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 12:57:45