jaxb 对象转xml 报错:类的两个属性具有相同名称 lombok(@Data)

此问题在工作当中遇到过三次了,每次对象嵌套转xml就遇到此问题,这次记录下,以便下次遇到,能百度到自己的记录来解决!!!!!

异常: com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 1 counts of IllegalAnnotationExceptions
类的两个属性具有相同名称 "examinationItemDetails"

按照我当前类的写法  得需要从get方法上加@XmlTransient来避免此错误,因为想用lombok的@Data,并且写在get上比较乱,查看文档https://www.w3cschool.cn/jaxb2/jaxb2-q85r2zok.html

所以在类名上增加此属性,意思是只映射字段

完整model

package com.gmk.webservice.entity;

import lombok.Data;

import javax.xml.bind.annotation.*;
import java.util.List;

/**
 * 描述:查询报告项目细项结果
 *
 * @author xianmin.yang
 * @create 2021-08-31 9:49
 */
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name="Response")
@Data
public class PeItemResponseVo extends ResCommonVo{

    @XmlElement(name = "ResultList")
    private PeItemResponseVo.ResultVo resultVo;


    @Data
    @XmlAccessorType(XmlAccessType.FIELD)
    public static class ResultVo{

        private String total;

//        @XmlElementWrapper(name = "ExaminationItem", nillable = true)
        @XmlElement(name = "ExaminationItem")
        private List<PeItemResponseVo.ExaminationItem> examinationItems;

    }
    @Data
    @XmlAccessorType(XmlAccessType.FIELD)
    public static class ExaminationItem{

        //项目名称
        private String itemDesc;
        //项目ID
        private String itemId;
        //报告格式
        private String reportFormat;
        //检查医生
        private String doctorName;
        //审核医生
        private String auditDoctorName;
        //检查日期
        private String examDate;
        //站点编码
        private String stationCode;
        //站点名称
        private String stationName;
        //第一条 1是 0否
        private String isFirst;
        //最后一条 1是 0否
        private String isLast;

        @XmlElementWrapper(name = "ItemDetailList", nillable = true)
        @XmlElement(name = "ExaminationItemDetail")
        private List<PeItemResponseVo.ExaminationItemDetail> examinationItemDetails;
    }

    @Data
    public static class ExaminationItemDetail{
        //细项名称
        private String itemDesc;
        //英文缩写
        private String itemAbbreviation;
        //细项结果
        private String itemResult;
        //异常提示
        private String exceptionTip;
        //单位
        private String itemUom;
        //参考范围
        private String referenceRange;
    }
}

 最终结果(嵌套对象转xml 得到第三方提供的接口格式)

<Response>
    <ResultCode>0</ResultCode>
    <ResultDesc>成功</ResultDesc>
    <ResultList>
        <total>1</total>
        <ExaminationItem>
            <itemDesc>内科检查</itemDesc>
            <itemId>2132||1</itemId>
            <reportFormat>RF_NOR</reportFormat>
            <doctorName>Demo Group</doctorName>
            <examDate>2017-08-25</examDate>
            <stationCode>2</stationCode>
            <stationName>内科</stationName>
            <isFirst>1</isFirst>
            <isLast>0</isLast>
            <ItemDetailList>
                <ExaminationItemDetail>
                    <itemDesc>心率</itemDesc>
                    <itemResult>89</itemResult>
                    <itemUom>次/分</itemUom>
                    <referenceRange>60-90</referenceRange>
                </ExaminationItemDetail>
                <ExaminationItemDetail>
                    <itemDesc>心脏节律</itemDesc>
                    <itemResult>整齐</itemResult>
                    <referenceRange>整齐</referenceRange>
                </ExaminationItemDetail>
            </ItemDetailList>
        </ExaminationItem>
        <ExaminationItem>
            <itemDesc>常规心电图检查(12导联)</itemDesc>
            <itemId>2132||5</itemId>
            <reportFormat>RF_EKG</reportFormat>
            <doctorName>Demo Group</doctorName>
            <examDate>2017-08-25</examDate>
            <stationCode>10</stationCode>
            <stationName>心电图</stationName>
            <isFirst>0</isFirst>
            <isLast>1</isLast>
            <ItemDetailList>
                <ExaminationItemDetail>
                    <itemDesc>常规心电图检查(12导联)</itemDesc>
                    <itemResult>临床诊断:;检查所见:正常;诊断意见:异常</itemResult>
                </ExaminationItemDetail>
            </ItemDetailList>
        </ExaminationItem>
    </ResultList>
</Response>

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值