2009-12-15 51 views
0

我「米對Hibernate我有3個表:公司,配置文件和網站的關係是 - 一個公司擁有衆多的配置文件和站點(一到多)休眠收集處理基礎

<hibernate-mapping> 

<class name="com.bla.dataobject.CompanyData" table="companies"> 
<id name="companyId" column="company_id"> 
    <generator class="increment"/> 
</id> 
<property name="name" column="company_name" type="java.lang.String"/> 
<property name="description" column="company_information" type="java.lang.String"/> 

<set name="sites" table="company_sites" inverse="true" cascade="all-delete-orphan" lazy="false"> 
    <key column="company_id" /> 
    <one-to-many class="com.bla.dataobject.CompanySiteData"/> 
</set> 

<set name="profiles" table="company_profiles" inverse="true" cascade="all-delete-orphan" lazy="false"> 
    <key column="company_id" /> 
    <one-to-many class="com.bla.dataobject.CompanyProfile"/> 
</set> 
</class> 

<class name="com.bla.dataobject.CompanySiteData" table="company_sites"> 
    <id name="siteId" column="site_id"> 
     <generator class="increment"/> 
    </id> 

    <property name="siteProxySettings" column="PROXY_SETTINGS" type="java.lang.String"/> 
    ................. 
    <property name="siteName" column="SITE_NAME" type="java.lang.String"/> 


    <many-to-one name="companyData" class="com.bla.dataobject.CompanyData" column="company_id" not-null="true"/> 

</class> 

<class name="com.bla.dataobject.CompanyProfile" table="company_profiles"> 
<id name="profileId" column="profile_id"> 
    <generator class="increment"/> 
</id> 

<property ............./> 

<many-to-one name="companyData" class="com.bla.dataobject.CompanyData" column="company_id" not-null="true"/> 

</class> 

插入和刪除工作得很好,但沒有更新。我的應用程序在一邊是Axis2 servlet,另一邊是休眠。我通過SOAP將公司對象提供給表示層,然後表示層對對象進行更改並請求保存更改(返回的對象具有hibernate id內部)如果我只是更新session.update(obj ECT);如果我從數據庫獲取存儲公司對象並在2個對象內執行合併(如刪除所有集合並插入接收的對象,然後更新原始對象),集合將不會更新(但僅限於公司平面參數)如果所有收集項目都是新的(否則我會在表中已經存在的集合名稱上獲得數據庫唯一約束)。所以我的問題是: 1.嘗試更新「父對象」還是需要分別更新所有3個對象是正確的? 2.什麼是更新集合的正確方式(添加/刪除/更新)

我真的很感激代碼示例(我沒有發現自己)處理集合。

非常感謝

回答

1
  1. 嘗試saveorupdate方法
  2. 設置配置XML的hibernate.show_sql =真,檢查日誌信息來源