parentId不会通过级联自动设置为子实体

时间:2012-04-12 05:14:00

标签: hibernate parent-child cascade

在实体Invoice中,我有一组DetailInvoice,cascade是ALL

@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "invoice")
public Set<DetailInvoice> getDetailInvoices() {
    return detailInvoices;
}

在实体DetailInvoice中:

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "invoice_id")
public Invoice getInvoice() {
    return invoice;
}

保存:

    Invoice invoice = new Invoice();
    DetailInvoice detailInvoice = new DetailInvoice();
    invoice.getDetailInvoices().add(detailInvoice);
    detailInvoice.setInvoice(invoice); // (1) Should we need this row?
    session.save(invoice);

如果我们没有行(1),则detailInvoice将在数据库中使invoiceId为null。 为什么Hibernate会根据注释映射自动将setInvoiceId设置为detailInvoice?

非常感谢

1 个答案:

答案 0 :(得分:0)

请参阅

Hibernate 4.1 Documentation Section 1.2.6

Person and Events示例与您所说的类似。

此致

Shardul。