nhibernate多对多,其中查找不是id字段

nhibernate多对多,其中查找不是id字段,nhibernate,nhibernate-mapping,Nhibernate,Nhibernate Mapping,我要简化我的问题。让我们假设我们有一个NHibernate域的宠物,有斑点狗、毛绒猫、猎人猫和SSS蛇,所以在db中这些家伙看起来像: ID Name Species 1 Spot 1 2 Fluffy 2 3 Hunter 2 4 SSSS 3 我们有一张物种表 ID Species 1 Dog 2 Cat 3 Snake 假设我们有一个包含这两个条目的皮肤类型表 ID Type 1 Furry 2 Scaley 还有一个

我要简化我的问题。让我们假设我们有一个NHibernate域的宠物,有斑点狗、毛绒猫、猎人猫和SSS蛇,所以在db中这些家伙看起来像:

ID  Name     Species
1   Spot     1
2   Fluffy   2
3   Hunter   2
4   SSSS     3
我们有一张物种表

ID Species
1  Dog
2  Cat
3  Snake
假设我们有一个包含这两个条目的皮肤类型表

ID  Type
1   Furry
2   Scaley
还有一个查找表

Species   Type
1         1
2         1
3         2
我如何映射它,以便将蒙皮类型与对象一起拉入

我看过这样的映射文件

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
namespace="menagerie"
assembly="menagerie">
<class name="Pet" table="Pets">
    <id name="Id">
      <column name="id" />
      <generator class="native" />
    </id>
    <property name="Name" />
    <many to one name="Species"
          class="PetSpecies"
          column="Species"
          cascade="all" />
    <bag name="SkinType" table="Species_SkinType" cascade="none" lazy="false">
      <key column="Species" />
      <many-to-many class="SkinType" column="[type]" />
    </bag>
</class>
</hibernate-mapping>


但是,应该填充宠物皮肤类型的袋子希望使用宠物的id作为查找键值,而不是宠物的种类。如何使用宠物的物种填充宠物的皮肤类型?

我会将皮肤类型映射为宠物的多对一关系。在UI和验证中应使用将物种链接到皮肤类型的多对多表,以便仅允许为物种选择有效的皮肤类型。我不会尝试在模型中强制执行此约束。

是否可以使用
外键
属性?看

好吧,我想出来了

袋子不应该在宠物类上,而应该在物种类上


所以这里没有Fluffy.Skintype=furry,而是Fluffy.Cat.Skintype=furry。

如何将皮肤类型映射为宠物的多对一?在宠物上没有提供皮肤类型的字段?你把它映射为宠物上的一个包,所以我想这就是你想要它的地方。现在你这么说似乎很明显:)