2012-04-12 1 views
0

В сущности фактуре, у меня есть набор DetailInvoice с каскадом ВСЕХParentID не установлен в дочерней сущность автоматически каскад

@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; 
} 

Saving :

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 является недействительным в базе данных. Почему Hibernate не устанавливаетInvoiceId to detailInvoice автоматически основывается на сопоставлении аннотаций?

Большое спасибо

ответ

0

Пожалуйста, обратитесь к

Hibernate 4.1 Documentation Section 1.2.6

Человек и события примером является то, что похоже на то, что вы говорите.

С уважением,

Shardul.

+0

Спасибо за ваш ответ, но я думаю, что этот документ не является ответом на вопрос. Это просто упоминание об _inverse_, которое является объявлением _mapBy_. Вопрос относится к каскаду и указывает родительский список для списка дочерних элементов. – phanhongphucit

+0

Я имел в виду эту часть «Во-первых, имейте в виду, что Hibernate не влияет на обычную семантику Java. Как мы создали связь между Person и Event в однонаправленном примере? Вы добавляете экземпляр события в коллекцию событий ссылки на экземпляр Person. Если вы хотите сделать эту ссылку двунаправленной, вы должны сделать то же самое с другой стороны, добавив ссылку Person в коллекцию в Event. Этот процесс «установки ссылки на обоих стороны "абсолютно необходимы с двунаправленными ссылками". Похоже, вы упомянули раздел 1.2.5, см. Раздел 1.2.6 –

Смежные вопросы