0

我已经将 K 和 Other 映射到父表 Errand 并且它们与真实的 id 相关,事情是 Errand 只有一个 K 或一个 Other 从来没有两者!当我只有这样的一行上有一个 Crieteria 查询时,它可以无缝工作;

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

但是当我尝试进行 K OR Other Criteria Query 时,我没有得到任何结果!

    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 回答