0
对于我当前的项目,我必须使用休眠映射旧数据库,但我遇到了一些问题。 数据库使用一个“实体”表进行设置,该表包含所有域对象的公共属性。属性包括(除其他外)创建日期,所有者(用户)以及随后在表对象中使用的主键。传统的休眠映射
上下文的简单表示是这样的:
table entity
- int id
- varchar owner
table account
- int accountid (references entity.id)
table contact
- int contactid (references entity.id)
- int accountid (references account.accountid)
我的问题表现出自己,当我尝试集合映射添加到我的帐户映射,包含属于该帐户的所有联系人。我尝试归结为以下几点:
<hibernate-mapping>
<class name="Contact" table="entity">
<id name="id" column="id">
<generator class="native" />
</id>
<join table="contact">
<key column="contactid"/>
<!-- more stuff -->
</join>
</class>
</hibernate-mapping>
<hibernate-mapping>
<class name="Account" table="entity">
<id name="id" column="id">
<generator class="native" />
</id>
<bag name="contacts" table="contact">
<key column="accountid" />
<one-to-many class="Contact"/>
</bag>
<join table="account">
<key column="accountid"/>
<!-- more stuff -->
</join>
</class>
</hibernate-mapping>
然而,当我尝试获取我得到一个SQL错误的帐户,说明该实体表不包含一个名为ACCOUNTID列。我明白了为什么会发生这种情况:当我希望它在联系人表中查找时,映射会尝试在实体表中查找合适的列。我在这里错过了一些明显的东西,还是应该从另一个方向来解决这个问题?
遗产继承部分全部ACK。 – boutta 2009-03-03 11:50:09