0

次のサイトのマッピングに問題があります。

接続 ID を持つ人がいます。これを使用して、バッグとプロパティをマップします。これは、データベースが既に存在する場合に機能します。しかし、単体テストでは、スキーマから 1 つを生成すると、「列名が重複しています」というエラーが発生します。

マッピングは次のとおりです。

    <?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>

問題: バッグからの Key プロパティとプロパティの両方に「Koppelid」。

編集:

LanguageSkill マッピング:

<?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 で列が 2 回定義されているためです。列をマップしたので、それを参照としてマップし、バッグを逆に設定できます

<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 に答える