【发布时间】:2015-09-16 08:30:23
【问题描述】:
我有两个类如下,带有 JAXB 注释。我已经查找了应对周期的方法,但我仍然不明白。在示例中,@XmlID 和@XmlIDREF 在这两个类中如何相互配合?为什么两个类中都有@XmlDREFs?有人可以帮忙解释这是如何工作的吗?提前谢谢了。
第一课:
@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 谢谢。很抱歉,我根据幻灯片输入了@edited。那是一个错字。我编辑了它。应该是客户
-
另外应该在客户中应该有一个 addOrder 方法吧?
-
@robin 是的,你是对的。谢谢,对此我感到非常抱歉..我添加了它。
标签: java xml jaxb annotations marshalling