我有一個將作爲根元素的對象(Department)。它有一個聚合對象(Employee),它有兩個專門化(Manager和FactoryWorker)。如果我將Employee設置爲其中一個專用對象,那麼只有Employee對象屬性被編組。我會很感激任何提示。JAXB編組子類繼承
例如
@XmlRootElement(name="department")
class Department {
public Department() {}
private Employee employee;
public void setEmployee(final Employee val) {
this.employee = val;
}
}
class Employee {
private Long id;
public Employee() {}
//getters and setters
}
class Manager extends Employee {
public Manager() {}
private Integer numberOfProjects;
//getters and setters
}
class FactoryWorker extends Employee {
public FactoryWorker() {}
private Boolean worksNights;
//getters and setters
}
的代碼片段只顯示編組
Deparment department = new Department();
FactoryWorker factoryWorker = new FactoryWorker();
factoryWorker.setId(999);
factoryWorker.setWorksNights(true);
JAXBContext jaxBContext = JAXBContext.newInstance(Department.class);
Marshaller jaxbMarshaller = jaxBContext.createMarshaller();
jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
jaxbMarshaller.marshal(department, System.out);
JAXB輸出:工廠工人的專業屬性不存在。只是父Employee中的值。
<department>
<employee>
<id>999</id>
</employee>
</department>
有辦法在代碼中錯別字太多,你粘貼 –
手寫代碼簡單地代表了一個簡單的父母/孩子結構與標準簡le getters和setter。無論如何,我已經更新了它。 – solarwind