[英]Bidirectional mapping in hibernate
我有兩個表,quotation和quotation_item。 他們之間存在一對多的關系。 我的要求是,當我執行quotation.setQuotationItem(set)
,應該刪除映射到quotation的舊quotationItem,而應該將set中的quotationItems映射到quotation。
/ * **我的報價pojo就像* ** * /
public class Quotation {
int quotationId;
String code;
String clientName;
Set<QuotationItem> quotationItem=new HashSet<QuotationItem>();
//getter and setter
}
/ * ** QuotationItem POJO * *** /
public class QuotationItem extends Quotation{
int id;
Quotation quotation;
String itemName;
int rate;
int qty;
//getter and setter
}
/ * *報價單.hbm * ** * **** /
<hibernate-mapping>
<class name="com.paramatrix.pojo.Quotation" table="quotation" >
<id name="quotationId" type="int" column="quotation_id">
<generator class="native" />
</id>
<property name="code" column="code" type="string" />
<property name="clientName" column="client_name" type="string" />
<set name="quotationItem" table="quotation_item" cascade="save-update" inverse="true">
<key>
<column name="quotation_id" not-null="true" />
</key>
<one-to-many class="com.paramatrix.pojo.QuotationItem" />
</set>
</class>
</hibernate-mapping>
/ ** QuotationItem.hbm * ** * ** /
<class name="com.paramatrix.pojo.QuotationItem" table="quotation_item" dynamic-insert="true">
<id name="id" type="int" column="id">
<generator class="native" />
</id>
<many-to-one name="quotation" class="com.paramatrix.pojo.Quotation" >
<column name="quotation_id" not-null="true" />
</many-to-one>
<property name="itemName" column="item_name" type="string" />
<property name="rate" column="rate" type="int" />
<property name="qty" column="qty" type="int" />
</class>
我的表結構就像報價一樣
quotation_id
code
client_name
我的Quotation_item表結構
id
quotation_id
item_name
rate
qty
嘗試修改集而不是替換它。 即:
quotation.getQuotationItem().clear();
quotation.getQuotationItem().addAll(newSet);
這是由於某些休眠狀態的怪異。
順便說一句,關於命名的一點。 您的Quotation.quotationItem
應該命名為quotationItems
因為它包含多個QuotationItem
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.