我有兩個類,如下所示,帶有JAXB註釋。我一直在尋找應對週期的方法,但我仍然不明白。在這個例子中,@XmlID和@XmlIDREF如何在這兩個類中相互工作?爲什麼在這兩個類中都有@XmlDREF?有人可以幫助解釋這是如何工作的?提前謝謝了。JAXB,帶有@XmlID註釋的XML mashal
類別之一:
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Customer {
private static int NEXT_ID = 0;
@XmlID
@XmlAttribute(name="xml-id")
private String _xmlId;
@XmlElement(name="name")
private String _name;
@XmlElementWrapper(name="orders-made")
@XmlElement(name="orders")
@XmlIDREF
private List<Order> _ordersMade;
protected Customer() {
this(null);
}
public Customer (String name) {
_name = name;
_ordersMade = new ArrayList<Order>();
NEXT_ID++;
_xmlId = getClass().getName() + ":" + NEXT_ID;
}
public String getName() {
return _name;
}
public void addOrder(Order order) {
_ordersMade.add(order);
order.addCustomer(this);
}
}
二班:
@XmlAccessorType(XmlAccessType.FIELD)
public class Order {
private static int NEXT_ID = 0;
@XmlID
@XmlAttribute(name="xml-id")
private String _xmlId;
@XmlElement(name="Customer")
@XmlIDREF
private List<Customer> _customers;
@XmlElement(name="name")
private String _name;
protected Order() {
this(null);
}
public Order(String name) {
_name = name;
_customers = new ArrayList<Customer>();
NEXT_ID++;
_xmlId = getClass().getName() + ":" + NEXT_ID;
}
public String getName() {
return _name;
}
void addCustomer(Customer customer) {
_customers.add(customer);
}
}
首先是什麼方法public Lecturer(String name){在客戶類中沒有返回類型。你是否生成了代碼? – robin
@robin謝謝。我非常抱歉我輸入@根據幻燈片編輯出來。這是一個錯字。我編輯它。它應該是客戶 – user3735871
加上在Custmer中應該有一個addOrder方法吧? – robin