nhibernate生成错误的sql查询与奇怪的别名

时间:2012-02-16 19:06:15

标签: nhibernate nhibernate-mapping

所以我有一个名为VideoAsset的实体,它被映射到VideoCategory和Group。两者都有很多:

public class VideoAssetMap : IAutoMappingOverride<VideoAsset>
{

    public void Override(AutoMapping<VideoAsset> mapping)
    {
        mapping.Map(x => x.Description)
            .CustomSqlType("NTEXT");

        mapping.HasManyToMany<Group>(x => x.Groups)
            .Table("VideoAssetGroups")
            .ParentKeyColumn("VideoAssetId")
            .ChildKeyColumn("GroupId")
            .AsSet();

        mapping.HasManyToMany<VideoCategory>(x => x.Categories)
            .Table("VideoCategoryRel")
            .ParentKeyColumn("VideoCategoryId")
            .ChildKeyColumn("VideoAssetId")
            .AsSet();
    }

}

当我尝试使用以下命令在nunit中使用sqlite运行以下查询时:

ICriteria query = this.Session.CreateCriteria<VideoAsset>("a")
            .CreateAlias("a.Categories", "c")
            .CreateAlias("a.Groups", " ag")
            .Add(Restrictions.Eq("c.Id", category.Id))
            .Add(Restrictions.Eq("a.Enabled", true));

我的sql无法执行,因为它已损坏:

inner join Groups alias_ ag2_ on groups4_.GroupId=alias_ ag2_.GroupId

我检查了我的数据库表,我不相信它们有任何问题。任何想法?

1 个答案:

答案 0 :(得分:1)

您的别名属性中有一个空格。

.CreateAlias(“a.Groups”,“ag”)