在NHibernate中连接表获取“集合元素映射具有错误的列数”

时间:2011-07-05 20:48:04

标签: nhibernate join nhibernate-mapping

我在使用连接表映射多对多关系时遇到问题。我得到的错误消息是“集合元素映射列数错误”

我的数据库架构基本上是: Drawing from SQL Server Management Studio。 尽管SQL Server Management Studio提供了图片,但数据库仍为Sqlite。

我的映射文件是:

<?xml version="1.0" encoding="utf-8"?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">

<class name="Design" table="Design">
  <id name="DesignID" column="DesignID" type="Int32">
    <generator class="native"/>
  </id>
  <property name="Name" type="String" column="Name" />
  <property name="DisplayOrder" type="Int32" column="DisplayOrder" />
  <property name="ChangeDate" column="ChangeDate" type="DateTime"/>
  <set name="DesignMeasures" table="DesignProperties" cascade="save-update,delete-orphan" >
    <key column="DesignID" />
    <many-to-many column="PropertyID" class="DesignProperties" unique="true" />
  </set>
</class>

  <class name="Properties" table="Properties">
    <id name="PropertyID" column="PropertyID" type="Int32">
      <generator class="native" />
    </id>
    <property name="Name" type="String" column="Name" />
    <property name="Value" type="String" column="Value" />
  </class>

  <class name="DesignProperties" table="DesignProperties">
    <composite-id>
      <key-many-to-one class="Design" name="DesignID" column="DesignID" />
      <key-many-to-one class="Properties" name="PropertyID" column="PropertyID" />
    </composite-id>
  </class>

</hibernate-mapping> 

我知道我做错了什么,但我无法理解。我究竟做错了什么?我该如何解决?

1 个答案:

答案 0 :(得分:0)

DesignProperties是多对多关系或实体,而不是两者。

由于它没有自己的任何属性,我将删除DesignProperties类及其映射,只留下Property的集合(不是属性;你的Design中的类名应该是单数的。