Java 使用JAXB和Jersey从其他类生成包含子节点的XML
我尝试使用JAXB和Hibernate从web服务生成XML 主类是Tabla,它有一个Alumno类类型的子节点。我需要使用Tabla类和子节点Alumno的数据生成XML 我接受两种可能性: 1.将Tabla数据链接中的XML链接添加到Alumno XML 2.使用Alumno类的include信息将子节点添加到TablaXML(我更喜欢这个) 我使用此配置尝试了第二个选项,但始终从服务器收到错误500: Tabla类Java 使用JAXB和Jersey从其他类生成包含子节点的XML,java,xml,xml-parsing,jaxb,jersey,Java,Xml,Xml Parsing,Jaxb,Jersey,我尝试使用JAXB和Hibernate从web服务生成XML 主类是Tabla,它有一个Alumno类类型的子节点。我需要使用Tabla类和子节点Alumno的数据生成XML 我接受两种可能性: 1.将Tabla数据链接中的XML链接添加到Alumno XML 2.使用Alumno类的include信息将子节点添加到TablaXML(我更喜欢这个) 我使用此配置尝试了第二个选项,但始终从服务器收到错误500: Tabla类 import java.math.BigDecimal; import
import java.math.BigDecimal;
import java.util.Date;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import javax.xml.bind.annotation.XmlSeeAlso;
@XmlSeeAlso(Alumno.class)
@XmlAccessorType(XmlAccessType.NONE)
@XmlRootElement(name = "tabla")
@XmlType(propOrder = {"id", "alumno", "fechaInicio" })
public class Tabla implements java.io.Serializable {
@XmlElement
private Integer id;
@XmlElement
private Alumno alumno;
@XmlElement
private Date fechaInicio;
public Tabla() {
}
public Tabla(Integer id,Date fechainicio, Alumno alumno) {
super();
this.id = id;
this.fechaInicio = fechainicio;
this.alumno = alumno;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Alumno getAlumno() {
return alumno;
}
public void setAlumno(Alumno alumno) {
this.alumno = alumno;
}
public Date getFechainicio() {
return fechaInicio;
}
public void setFechainicio(Date fechainicio) {
this.fechaInicio = fechainicio;
}
}
import java.util.Date;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
@XmlAccessorType(XmlAccessType.NONE)
@XmlRootElement(name = "alumno")
@XmlType(propOrder = {"nombre", "apellidos"})
public class Alumno implements java.io.Serializable {
@XmlAttribute
private Integer id;
@XmlElement
private String nombre;
public Alumno() {
}
public Alumno(String nombre, String apellidos) {
this.nombre = nombre;
this.apellidos = apellidos;
}
public Integer getId() {
return this.id;
}
public void setId(Integer id) {
this.id = id;
}
public String getNombre() {
return this.nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getApellidos() {
return this.apellidos;
}
public void setApellidos(String apellidos) {
this.apellidos = apellidos;
}
}
校友班
import java.math.BigDecimal;
import java.util.Date;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import javax.xml.bind.annotation.XmlSeeAlso;
@XmlSeeAlso(Alumno.class)
@XmlAccessorType(XmlAccessType.NONE)
@XmlRootElement(name = "tabla")
@XmlType(propOrder = {"id", "alumno", "fechaInicio" })
public class Tabla implements java.io.Serializable {
@XmlElement
private Integer id;
@XmlElement
private Alumno alumno;
@XmlElement
private Date fechaInicio;
public Tabla() {
}
public Tabla(Integer id,Date fechainicio, Alumno alumno) {
super();
this.id = id;
this.fechaInicio = fechainicio;
this.alumno = alumno;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Alumno getAlumno() {
return alumno;
}
public void setAlumno(Alumno alumno) {
this.alumno = alumno;
}
public Date getFechainicio() {
return fechaInicio;
}
public void setFechainicio(Date fechainicio) {
this.fechaInicio = fechainicio;
}
}
import java.util.Date;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
@XmlAccessorType(XmlAccessType.NONE)
@XmlRootElement(name = "alumno")
@XmlType(propOrder = {"nombre", "apellidos"})
public class Alumno implements java.io.Serializable {
@XmlAttribute
private Integer id;
@XmlElement
private String nombre;
public Alumno() {
}
public Alumno(String nombre, String apellidos) {
this.nombre = nombre;
this.apellidos = apellidos;
}
public Integer getId() {
return this.id;
}
public void setId(Integer id) {
this.id = id;
}
public String getNombre() {
return this.nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getApellidos() {
return this.apellidos;
}
public void setApellidos(String apellidos) {
this.apellidos = apellidos;
}
}
Hibernate配置是可以的,因为我试图通过代码从Alumno实体获取一个Tabla的列表,包括Alumno信息和Hibernate信息。所以,当我尝试将Tabla转换为XML时,问题就出现了
我看到您也可以尝试使用XMLAdapter,但我不知道如何实现这种情况。您不需要混合使用视图模型和DAO。但无论如何,看看下面的文章,从测试中找到更多关于JAX-RSJAXB示例的信息