Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java springrest服务使用@RestController将多个实体类作为xml响应返回_Java_Xml_Hibernate_Spring Mvc_Spring Data Jpa - Fatal编程技术网

Java springrest服务使用@RestController将多个实体类作为xml响应返回

Java springrest服务使用@RestController将多个实体类作为xml响应返回,java,xml,hibernate,spring-mvc,spring-data-jpa,Java,Xml,Hibernate,Spring Mvc,Spring Data Jpa,如何在SpringREST服务中以XML响应的形式返回多个实体类 示例:我需要如下响应 <GetEmployeeById> <Response> <Status>0</Status> <Message>Data found</Message> </Response> <Da

如何在SpringREST服务中以XML响应的形式返回多个实体类

示例:我需要如下响应

<GetEmployeeById>
            <Response>
                <Status>0</Status>
                <Message>Data found</Message>
            </Response>
            <Data>
                <Employee>
                    <Id> 2 </Id>
                    <Name> Mani M </Name>
                    <Job> SOftware Developer </Job>
                    <Salary> 40000 </Salary>
                </Employee>
            </Data>         
        </GetEmployeeById>

0
发现的数据
2.
玛尼M
软件开发人员
40000
这里,Response和Employee是独立的实体。我的代码得到以下XML响应。这里的问题是,我在response节点中获取response节点,在employee节点中获取employee节点

<GetEmployeeById>
   <Response>
      <Response>
         <Status>0</Status>
         <Message>Data found</Message>
      </Response>
   </Response>
   <Employee>
      <Employee>
         <Id>2</Id>
         <Name>Mani M</Name>
         <Job>SOftware Developer</Job>
         <Salary>12000</Salary>
      </Employee>
   </Employee>
</GetEmployeeById>

0
发现的数据
2.
玛尼M
软件开发人员
12000
下面是一个java类,我在其中组合了两个实体类

@XmlRootElement (name="GetEmployeesById")
public class GetEmployeesById implements Serializable{

    
    private static final long serialVersionUID = 1L;
    
    private List<Employee> Employee = new ArrayList<Employee>();
    
    private List<Response> Response = new ArrayList<Response>();

    public List<Employee> getEmployee() {
        return Employee;
    }

    public void setEmployee(List<Employee> employee) {
        Employee = employee;
    }

    public List<Response> getResponse() {
        return Response;
    }

    public void setResponse(List<Response> Response) {
        Response = Response;
    }
    
    
}
@XmlRootElement(name=“GetEmployeesById”)
公共类GetEmployeesById实现可序列化{
私有静态最终长serialVersionUID=1L;
private List Employee=new ArrayList();
私有列表响应=新建ArrayList();
公共列表getEmployee(){
返回员工;
}
公共员工(列出员工){
雇员=雇员;
}
公共列表getResponse(){
返回响应;
}
公共无效设置响应(列表响应){
响应=响应;
}
}

请帮我解决这个问题。

您的问题在于
列表
,因为它是
列表
,父
标记表示列表,子
表示
列表中的元素

为了实现所需的有效负载,
响应
不能是
列表
,必须是
自定义响应

对于您的数据节点,您可能希望尝试创建一个新类,如下所示

@XmlRootElement(name = "Data")
public class Data implements Serializable {
   private static final long serialVersionUID = 1L;
   
   @XmlElement(name = "Employee")
   private List<Employee> employees
}
@XmlRootElement(name=“Data”)
公共类数据实现可序列化{
私有静态最终长serialVersionUID=1L;
@xmlement(name=“Employee”)
私人名单雇员
}

然后,您可以在
GetEmployeesById
类中用
数据
替换
列表
,重命名字段和getter

//私有列表Employee=new ArrayList();
私有列表数据=新的ArrayList();
或者将注释
@xmlement(name=“Data”)
添加到字段或getter(不确定)

和更改字段(也是getter)

//private List Response=new ArrayList();
私有响应=新响应();

根据您的建议进行了修改,现在数据节点将同时作为父节点和子节点出现。2 Kumar M Junior Software Developer 120000这里找到的数据是一些提示,我会尝试
@XmlVariableNode(“name”)
,但目前无法验证。谢谢您的帮助