3

私は以下に定義されたエンティティを持っています:

public class Foo : Entity<Foo.FooId>
{
    public class FooId
    {
        public virtual String Bar { get; protected internal set; }
        public virtual Int32 Buzz { get; protected internal set; }
    }

    // ...
}

そして、ここに基本クラスがあります:

public abstract class Entity<T> : IEquatable<Entity<T>>
{
    public virtual T Id { get; protected internal set; }

    // ...
}

「Id」プロパティを「複合キー」としてマップするので、次のマッピング クラスを追加しました。

public class FooMap : ClassMapping<Foo>
{
    public FooMap()
    {
        ComponentAsId(x => x.Id, m =>
        {
            m.Property(p => p.Bar);
            m.Property(p => p.Buzz);
        });
    }
}

それはすべてとてもいいことですが、次のクエリ試行でエラーが発生します。

session.QueryOver<Foo>()
       .Where(m => m.Id.Bar == "a" &&
                   m.Id.Buzz == 2).List();

私が得るエラーは次のとおりです: NHibernate.QueryException : プロパティを解決できませんでした: Id of: Foo

基本クラスを削除し、すべてを「Foo」内にカプセル化することで、魅力的に機能するため、非常に奇妙です。前もって感謝します。

4

1 に答える 1

1

これはバグであり、NH-3105として報告されました。現在、最新のソース コードで修正されており、3.3.3.GA としてリリースされます。

于 2013-02-08T16:37:28.787 に答える