簡體   English   中英

休眠中的雙向映射

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM