0

我在映射以下站点时遇到了一些困难:

我有一个具有连接 ID 的人,我用它来获取地图包和属性。如果数据库已经存在,则此方法有效。但是对于我们的单元测试,我们从模式中生成一个,它给出了一个错误:“重复的列名”。

这是映射:

    <?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="DomainLayer.SearchDomain" assembly="Test">
  <class name="SearchPerson" table="person" lazy="false" mutable="false">
    <id name="Id" column="`id`" type="int">
      <generator class="identity" />
    </id>
    <property name="Name" column="`NAAM`" type="string"  />
    <property name="FirstName" column="`VOORNAAM`" type="string"  />
    <property name="ConnectionId" column="`Koppelid`" type="int" />
    <bag name="Languages" lazy="false" mutable="false" access="field.camelcase-underscore">
      <key property-ref="ConnectionId" column="Koppelid" />
      <one-to-many class="DomainLayer.Person.LanguageSkill, Test" />
    </bag>
  </class>
</hibernate-mapping>

问题:“Koppelid”既在包中的 Key 属性中,也在属性中。

编辑:

语言技能映射:

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="DomainLayer.Person" assembly="Test">
  <class name="LanguageSkill" table="languageskill" lazy="false">
    <id name="Id" type="Int32">
      <generator class="identity" />
    </id>
    <property name="ConnectionId" column="`KoppelId`" type="Int64"  />
    <property name="Remark" column="`Opmerking`" type="string"  />
    <property name="Source" column="`CdOorsprong`" type="string"  />
    <property name="MotherTongue" column="`moedertaal`" type="boolean"  />
    <property name="ModifiedDate" column="`wyzdat`" type="DateTime"  />
  </class>
</hibernate-mapping>
4

2 回答 2

1

它应该确实有效。这可能是因为您在一种情况下用 ` 标记了它,但在另一种情况下没有。

试试这个:

<bag ...>
    <key property-ref="ConnectionId" column="`Koppelid`" />
于 2012-07-06T07:53:31.277 回答
0

原因实际上是该列在 LanguageSkillMapping 中定义了两次。由于您映射了该列,您可以将其映射为参考并将包设置为反向

<bag name="Languages" inverse="true" lazy="false" mutable="false" access="field.camelcase-underscore">
  <key property-ref="ConnectionId" column="Koppelid" />
  <one-to-many class="DomainLayer.Person.LanguageSkill, Test" />
</bag>


<many-to-one name="SearchPerson" column="`KoppelId`" />

更新:没关系,斯特凡明白了

于 2012-07-06T08:05:24.643 回答