【发布时间】:2015-08-14 01:43:59
【问题描述】:
我有一个包含多个发票项目的发票对象。根据用户选择,我需要将一些项目从一张发票移动到另一张发票。 我正在使用 MySql 和 Hibernate。
发票项被定义为延迟加载,如下所示:
在 Java 中,我执行以下操作:
Invoice newInvoice = new Invoice();
iter = invoice.getPurchasableItems().iterator();
while(iter.hasNext()){ // item that is not purchased into new invoice
InvoiceItem item = iter.next();
invoice.getItems().remove(item);
newInvoice.addItem(item);
}
然后我保存两张发票:
iter = newInvoice.getItems().iterator();
while(iter.hasNext()){
InvoiceItem item = iter.next();
session.saveOrUpdate(item);
}
iter = invoice.getItems().iterator();
while(iter.hasNext()){
InvoiceItem item = iter.next();
session.saveOrUpdate(item);
}
session.commit();
我得到 ObjectDeletedException。除了将它们从一张发票移到另一张发票之外,我不相信我对发票项目有任何其他参考。我这样做是因为我想确保我不会在发票项目表中得到很多未使用的 ID。
您能提出解决此问题的方法吗?
【问题讨论】: