我试图获得我想要正确持久的映射。对于我的例子,我有一个ItemY类,它可以有0,1,*资产。但是,资产可以属于ItemY或ItemZ对象。我正在尝试使用交叉引用表来存储它。
模式
TABLE [dbo].[ItemY](
[ItemYID] [int] IDENTITY(1,1) NOT NULL,
--more columns here
TABLE [dbo].[Asset](
[AssetID] [uniqueidentifier] NOT NULL,
[AssetTypeID] [int] NOT NULL,
[DisplayOrder] [int] NOT NULL,
[Location] [varchar](255) NOT NULL,
TABLE [dbo].[ItemYAsset](
[ItemYID] [int] NOT NULL,
[AssetID] [uniqueidentifier] NOT NULL,
映射:
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="MyAssembly" namespace="My.Namespace">
<class name="ItemY" table="ItemY">
<id name="ItemYId" column="ItemYID">
<generator class="identity" />
</id>
<bag name="Images" table="ItemYAsset" inverse="true" cascade="all-delete-orphan">
<key column="ItemYID" not-null="true" />
<many-to-many class="Asset" column="AssetID" unique="true" />
</bag>
<!--more mapping here-->
</class>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="MyAssembly" namespace="My.Namespace">
<class name="Asset" table="Asset">
<id name="AssetId" column="AssetID">
<generator class="guid.comb" />
</id>
<property name="DisplayOrder"></property>
<property name="Location"></property>
</class>
</hibernate-mapping>
我不想在Asset上公开ItemY属性,因为Asset并不总是属于ItemY。我的ItemY类保持不变,并且还持久保存Asset类,但没有任何内容添加到关联表(ItemYAsset)。知道我做错了吗?
答案 0 :(得分:2)
inverse="true"
意味着“另一方”负责维持这种关系。
由于您没有“其他方面”(关系是单向的),请删除该属性。