表之间的分离总是不存在

时间:2012-10-17 07:54:43

标签: nhibernate criteria

我已将K和Other映射到父表Errand并且它们是真正的id,事情是Errand只有一个K或一个其他从不都是!当我在一行上只有一个Crieteria查询时,它可以无缝地工作;

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

但是当我尝试做K或其他标准查询时,我没有得到任何结果!

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

1 个答案:

答案 0 :(得分: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)));