1

我有两个实体RolePermission,每个实体在数据库中都有它的表,并使用 HiLo 算法正确设置了 ID 生成。这工作正常。但是,数据库中还有一个表ROLE_PERMISSION_ASSIGNMENT ,它只包含上述两个表的外键,将实体绑定在一起。此表在我的应用程序中没有对应的实体。

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_PERMISSION_ASSIGNMENT中创建相应条目时失败,因为它不提供主键。

有没有办法告诉 NHibernate也使用 HiLo 算法为ROLE_PERMISSION_ASSIGNMENT生成 ID?

非常感谢你。

4

1 回答 1

0

您需要将该关联映射为idbag,这正是您想要的(参见http://www.nhforge.org/doc/nh/en/index.html#collections-idbag

我不认为 Fluent 支持它。为此,您必须混合使用 XML 映射。

于 2011-06-30T12:50:36.593 回答