我在使用连接表映射多对多关系时遇到问题。我得到的错误消息是“集合元素映射列数错误”
我的数据库架构基本上是: 。 尽管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>
我知道我做错了什么,但我无法理解。我究竟做错了什么?我该如何解决?
答案 0 :(得分:0)
DesignProperties是多对多关系或实体,而不是两者。
由于它没有自己的任何属性,我将删除DesignProperties类及其映射,只留下Property
的集合(不是属性;你的Design
中的类名应该是单数的。