有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java JPA双向删除

在OpenJPA中,我尝试删除具有到另一个实体的双向映射的实体。我确实“查找”然后“删除”,但我遇到了一个“遇到删除对象”的例外。有人能给我举个有效的例子吗

@Entity
@Table(name="Order")
public class Order implements Serializable {
    @EmbeddedId
    private OrderPK pk;
...

    @OneToOne(cascade=CascadeType.ALL, mappedBy="order")
    private Invoice invoice;
}

@Entity
@Table(name="Invoice")
public class Invoice implements Serializable {
    @EmbeddedId
    private InvoicePK pk;
...
    @OneToOne
    @PrimaryKeyJoinColumn   
    private Order order;
}

@Embeddable
public class OrderPK implements Serializable {
    private String id;
    private Date date;
...
}

@Embeddable
public class InvoicePK implements Serializable {
    private String id;
    private Date date;
...
}

首先,我将它们添加到单个事务中并提交:

Order order = new Order(...);
order.set...
Invoice invoice = new Invoice(...);
invoice.set...
order.setInvoice(invoice);
invoice.setOrder(order);
em.persist(order);

然后,当我尝试删除订单时,我希望发票也会消失:

Order order = em.find(Order.class, orderPK); em.remove(order);

但我有一个例外,那就是:

Encountered deleted object "org.apache.openjpa.enhance.Order$pcsubclass-
Order-OrderPK@92882281" in persistent field "Invoice.order" of managed 
object "Invoice$pcsubclass-InvoicePK@92882281" during flush.

共 (0) 个答案