このテーブルには他の属性が含まれているため、他の3つのテーブルにマップされた複合キーを持つレガシーテーブルがあります。これは単純なマッピングテーブルではないため、多対多セットソリューションを使用してこれをマップすることはできません.
以下は私がやったことです:
<class name="classA" table="A">
<composite-id name="ID" class="AKey">
<key-many-to-one name="Id_one" class="One" column="Id_one" />
<key-many-to-one name="Id_two" class="Two" column="Id_two" />
<key-many-to-one name="Id_three" class="Three" column="Id_three" />
</composite-id>
AKey は 3 つの ID を保持する単なる構造体であり、Id_one、Id_two、および Id_three はすべて、それぞれのクラスで int として定義されています。
public struct Akey {
public int Id_one { get; set; }
public int Id_two { get; set; }
public int Id_three { get; set; }
}
これは正常にコンパイルされますが、実行しようとするとエラー メッセージが表示されます。
NHibernate.QueryException : NHibernate.Criterion.SimpleExpression の型の不一致: ID は AKey 型、実際の型は System.Int32 と予想されます
私が間違ったことや見逃したことについてアドバイスしてください。
本当にありがとう!