1

RolePermissionの2 つのエンティティがあり、それぞれデータベースにテーブルがあり、HiLo アルゴリズムを使用して適切に ID 生成をセットアップしています。これはうまくいきます。ただし、データベースにはもう 1 つのテーブルROLE_PERMISSION_ASSIGNMENTがあり、前述の 2 つのテーブルへの外部キーが含まれているだけで、エンティティが結合されています。このテーブルには、アプリケーションに対応するエンティティがありません。

Roleエンティティのマッピングは次のようになります。

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 を生成する方法を指定できません。そのため、Role (いくつかのPermissionsを含む) を DB に保存すると、 ROLE_PERMISSION_ASSIGNMENTに対応するエントリを作成するときに失敗します。主キーを提供しません。

HiLo アルゴリズムでもROLE_PERMISSION_ASSIGNMENTのID を生成するように NHibernate に指示する方法はありますか?

どうもありがとうございました。

4

1 に答える 1