2012-02-16 4 views
0

J'ai donc une entité appelée VideoAsset qui est mappée à une VideoCategory et un Group. sont tous les deux beaucoup à beaucoup:nhibernate générant une requête sql incorrecte avec un alias bizarre

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(); 
    } 

} 

Lorsque je tente d'exécuter la requête suivante dans nunit avec SQLite en utilisant les éléments suivants:

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)); 

Mon sql ne peut pas exécuter parce qu'il est cassé:

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

J'ai vérifié mes tables de base de données et je ne crois pas qu'il y ait quelque chose de mal avec elles. Des idées?

Répondre

1

Il existe un espace dans votre alias de la propriété Groups.

.CreateAlias ​​("a.Groups", "ag")

Questions connexes