使用HQL查找空ID

时间:2011-08-28 19:05:10

标签: hql

我正在构建一个需要返回用户ID为空的订单的hql查询:

        IList<Order> rows = DataContext.LoadList<Order>(
           "from Order " +
           "where OrderDate < ? " +
           "  and User.ID is null" //have also tried 'and User is null'
           , DateTime.Today.AddMonths(-1));

即使针对db的直接查询返回几十个,也不返回任何记录。

如果我使用相同的查询,但将'is null'替换为'33'(有效的userID),我将获得该用户的订单。所以查询的基础是有效的 - 我如何表达'is null'位是错误的。

可能与以下事实有关:在.NET项目中,Order对象包含一个复杂的User对象,而在数据库中,Orders表只包含整数(ID),它是User表的外键。

仍然 - 由于' 和User.ID = 33 '按预期工作,我不遵循为什么' 为空 '没有。

This answer suggests I need to switch of the Criteria route. This answer suggests that my current code should work.

THX

1 个答案:

答案 0 :(得分:0)

不是构建查询语句,而是使用Query工厂方法:

        Query q = new Query();            
        q.Criteria.Add(new Criteria("User.ID", CriteriaOperator.IsNull));

作品。