2012-04-12 11 views
0

によって自動的に子エンティティに設定されていない、私はカスケードでDetailInvoiceのセットを持っているエンティティDetailInvoiceのすべてのPARENTIDがエンティティ請求書では、カスケード

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

です:

@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がdetailInvoiceにsetInvoiceIdを設定しないのは、なぜアノテーションマッピングに自動的に基づくのですか?

感謝

答えて

0

は、人とイベントの例は、あなたが話しているものと同様のものである

Hibernate 4.1 Documentation Section 1.2.6

を参照してください。

ありがとう、

シャルダール。

+0

答えていただきありがとうございますが、私はその文書が質問の答えではないと思います。これは、_mapBy_宣言である_inverse_についての言葉です。質問は、カスケードに関連し、子のリストの親を指定します。 – phanhongphucit

+0

私はこの部分を意味しました "最初に、Hibernateは通常のJavaのセマンティクスに影響しないことを覚えておいてください。単方向の例でPersonとEventの間のリンクを作成する方法?Eventのインスタンスをイベントのコレクションこのリンクを双方向にする場合は、イベントのコレクションへのPerson参照を追加することで、反対側でも同じ操作を行う必要があります。双方向リンクが絶対に必要です」 1.2.5項を参照しているようですが、1.2.6項を参照してください。 –

関連する問題