使用 Hibernate 在单个会话中插入一对多关系表

Inserting to One to Many Relational tables in Single Session Using Hibernate

我正在使用 Hibernate 3.6.7(核心)并且我正在使用 XML 配置。
我有一个 Company Master 和它的 Branch Master table。其中的关系是一对多。我的要求是,当我将数据插入 Company Master 时,我也得到了分支机构列表。
在配置文件中,我定义了它

<set name="branches" table="m_company_branch" 
                 inverse="true" lazy="true" fetch="select" cascade="all">
            <key>
                <column name="company_id" not-null="true" />
            </key>
            <one-to-many class="com.my.CompanyBranchStructure" />
        </set>

当我插入到 table 时,它只插入到主 table,即 m_company 但未提交。但是,我也通过了分支列表。因此我得到一个错误 "Batch update returns....." 因为它没有得到 company_id (分支的外键)。

看了网上的一些内容,才知道需要单独Insert/Commit交易才行。
但是我无法理解配置文件中的映射。
由于它单独处理每个 table (记录),我可以在不使用一对多或多对多关系的情况下做同样的事情。

请多指教

我不确定它是否适合你,但就我而言,我可以通过使用以下方法来做同样的事情;

小学 table(即您的公司)

<set name="branches" lazy="false" fetch="select" optimistic-lock="false" cascade="all" >
        <key column="company_id" not-null="true" update="false"/>
        <one-to-many class="com.my.CompanyBranchStructure"  />
        </set>

中学 table(即 CompanyBranchStructure);

<property name="companyId" insert="false" update="false">
            <column name="company_id" />
        </property>

这对我来说很有效。我希望这也能解决您的问题。