2013-03-13 130 views
0

我有2班叫Enquiry.java和EnquiryItem.javaHibernate的一對多映射錯誤

當產生enuiry我現在的儲蓄在EnquiryItems的項目。

下面是我在POJO類中的映射文件。

Enquiry.java

@OneToMany(fetch=FetchType.LAZY,cascade = CascadeType.ALL,mappedBy="enquiryId") 
@JoinColumn(name = "enq_id", referencedColumnName = "id") 
private List<EnquiryItem> enquiryItems=new ArrayList<EnquiryItem>(); 

EnquiryItem.java

@ManyToOne 
@JoinColumn(name="enq_id") 
private Enquiry enquiryId; 

我無法找到我在哪裏做錯了。請幫幫我。

編輯:當一個查詢被保存時,enquiry_id在數據庫中保存爲空。

+0

異常的類型你得到 – Krushna 2013-03-13 06:53:50

+0

我摸不清,我做錯了。請幫助你們 – 2013-03-13 06:54:08

+0

@Krushna我沒有得到任何異常,但數據庫中的enq_id爲空 – 2013-03-13 06:54:33

回答

2

問題是你需要在將它保存到數據庫之前設置enquiryId。這是因爲您已經使用了mappedBy屬性。你需要做的是。

當您將EnquiryItem對象添加到列表中時,請通過調用它的setter方法來設置enquiryId。 編輯:

象下面這樣:

EnquiryItem.setEnquiryId(enquiry) 

編輯2:

Enquiry enquiry= new Enquiry(bus,prListNo,enquiryNo,user,new java.util.Date(),enquiryItemsList); 
for(EnquiryItem item:enquiryItemsList) 
item.setEnquiryId(enquiry); 
+0

在插入時,我們手中沒有id,因爲數據庫將生成它。所以它必須自己處理它。 – 2013-03-13 07:03:16

+0

我不是說要設置數據庫生成的ID。 (EnquiryItem.setEnquiryId)(詢問詢問) – Krushna 2013-03-13 07:05:32

+0

這是我產生的方式詢問實例,詢問詢問=新的詢問(公共汽車,prListNo,詢問No,用戶,新的Java .util.Date(),enquiryItemsList); enquiryItemsList是EnquiryItem。現在我該如何設置它? – 2013-03-13 07:22:58