2013-03-13 115 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