2009-12-15 52 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 =真,检查日志信息来源