0

私は K と Other を親テーブル Errand にマッピングしましたが、それらは真の ID に関連付けられています。問題は、Errand には 1 つの K または 1 つの Other しかないということです。このような 1 つの行のみに Crieteria Query がある場合、シームレスに機能します。

    public void AddNoteQuery(DetachedCriteria query)
    {
        if (_request.Note != null)
        {
            query
                .CreateAlias("Other", "o")
                .Add(Restrictions.Eq("o.Note", _request.Note));
        }
    }

しかし、K OR Other Criteria クエリを実行しようとすると、結果が得られません!

    public void AddNoteQuery(DetachedCriteria query)
    {
        if (_request.Note != null)
        {
            query
                .CreateAlias("K", "k")
                .CreateAlias("Other", "o")
                .Add(Restrictions.Or(
                    Restrictions.Eq("k.Note", _request.Note),
                    Restrictions.Eq("o.Note", _request.Note)));
        }
    }
4

1 に答える 1

2

結合タイプを指定してみてください:

query
    .CreateAlias("K", "k", JoinType.LeftOuterJoin)
    .CreateAlias("Other", "o", JoinType.LeftOuterJoin)
    .Add(Restrictions.Or(
        Restrictions.Eq("k.Note", _request.Note),
        Restrictions.Eq("o.Note", _request.Note)));
于 2012-10-17T08:35:00.747 に答える