私は2つのエンティティ、役割と許可、ヒロアルゴリズムとデータベースと適切にセットアップID生成におけるそのテーブルとのそれぞれを有しています。これは正常に動作します。しかし、データベースにはもう1つのテーブルROLE_PERMISSION_ASSIGNMENTがあります。これは単に、前述の2つのテーブルへの外部キーを含み、エンティティを結合します。この表には、アプリケーション内にエンティティの対応がありません。NHibernateは、ハイローおよび多対多の関連
役割エンティティのマッピングは、次のようになります。
public class RoleMap : ClassMap<Role>
{
public RoleMap()
{
Table("\"ROLE\"");
LazyLoad();
Id(x => x.Id, "id").GeneratedBy.HiLo("hilo", "hilo_role", "50");
Map(x => x.Name).Column("name");
HasManyToMany<Permission>(x => x.Permissions)
.Table("\"ROLE_PERMISSION_ASSIGNMENT\"")
.ParentKeyColumn("fk_id_role")
.ChildKeyColumn("fk_id_permission")
.Cascade.None();
}
}
私はROLE_PERMISSION_ASSIGNMENTテーブルのエンティティを持っていないので、私はそのIDが生成されるべき方法を指定するため、することはできませんロール(一部の文字がパーミッション)をDBに保存すると、ROLE_PERMISSION_ASSIGNMENTに対応するエントリが作成されますが、プライマリキーが提供されないため失敗します。
HiLoアルゴリズムでもROLE_PERMISSION_ASSIGNMENTのIDを生成するようにNHibernateに指示する方法はありますか?
ありがとうございました。
通常、関連テーブルには複合PKとしても使用されるフィールドが2つしかありません。なぜあなたはそれのための別の種類のIDが必要なのか説明できますか? –
ありがとうございましたsJhonny、そうですが、アソシエーションテーブルにIDを追加する必要はありません。 – twoflower