2010-12-17 11 views
2

私はこのようになりますエンティティがあります。NHibernateは - AliasToBeanと協会

public class MyEntity { 
public virtual int Id { get; set; } 
public virtual string Name { get; set ; } 
public virtual Role UserRole { get; set; } 
} 

のプロパティ「名前」マッピングされたプロパティが、「ID」と「のUserRole」されていません。私はこのようなカスタム条件を使用して、このクラスを移入します:

ICriteria c = Db.CreateCriteria<MyEntity>("m") 
.CreateAlias("Role", "r") 
.SetProjection(Projections.ProjectionList() 
.Add(
    Projections.SqlProjection(@"Name = case TypeId 
        when 2 then (select Name from tblOne where Id = EntityId) 
        when 4 then (select Name from tblTwo where Id = EntityId) 
        when 3 then (select Name from tblThree where Id = EntityId) 
        end", new string[] { "Name" }, new NHibernate.Type.IType[] { NHibernateUtil.String })) 
       .Add(Projections.Property("m.Id"), "Id") 
       .Add(Projections.Property("r.Id"), "UserRole.Id") 
       .Add(Projections.Property("r.Desc"), "UserRole.Desc") 
       .Add(Projections.Property("r.Permission"), "UserRole.Permission") 
    ) 
    .SetResultTransformer(Transformers.AliasToBean<EntityPermission>()); 

しかし、私はこれを実行する場合に例外がスローされます「クラスに 『{UserRole.Id}』プロパティのセッターを見つけることができませんでした 『MyEntity』」 。

私の質問はaliastobeanサポートの関連付けではありませんし、もしそうなら、適切な構文は何ですか?

答えて

0

プロパティの名前が「ロール」ではなく「UserRole」であるため、「ロール」ではなく「UserRole」にエイリアスを作成する必要があります。