我使用的是Hibernate 3.6.7(Core),我使用的是XML配置 我有One Company Master及其Branch Master表。其中的关系是1对多。我的要求是当我将数据插入公司大师时我也得到了分支列表 在配置文件中,我已经定义了它
<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>
当我插入表时,它只插入主表,即m_company但未提交。但是,我也通过了分支列表。因此我收到错误“批量更新返回.....”,因为它没有获取company_id(分支的外键)。
在阅读了互联网上的一些内容之后,我知道我需要为此目的单独进行插入/提交交易 但后来我无法理解配置文件中的映射 因为它分别处理每个表(记录),所以我也可以不使用一对多或多对多关系。
请指导。
答案 0 :(得分:1)
我不确定它是否适合您,但在我的情况下,我可以通过使用以下内容来做同样的事情;
在主要表格中(即您所在的公司)
<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>
和辅助表(即CompanyBranchStructure);
<property name="companyId" insert="false" update="false">
<column name="company_id" />
</property>
这适用于我的情况。我希望这也能解决你的问题。