【问题标题】:How to limit rows count only of left part of join with QueryOver?如何使用 QueryOver 仅限制连接左侧部分的行数?
【发布时间】:2015-02-27 18:16:25
【问题描述】:

Take() 限制了整个查询结果的总行数,但我只需要限制连接左侧的行来检索 50 个用户及其所有字符:

 session.QueryOver<User>(() => userAlias)
            .Where(...)
            //.Take(50) - can't do this! 
            .JoinAlias(x => x.Characters, () => characterAlias, JoinType.LeftOuterJoin)
            .Select(...)
            .TransformUsing(Transformers.AliasToBean<UserDto>())
            .Take(50)
            .List<UserDto>();

这个查询应该通过QueryOver来完成。

示例sql:

SELECT u.id, u.nickname, c.class_id, c.xp FROM (
   (SELECT id, nickname FROM users WHERE lower(nickname) LIKE 'abcd%' LIMIT 50) as u
   LEFT OUTER JOIN characters c ON c.user_id = u.id
)

有可能吗?

【问题讨论】:

标签: c# nhibernate left-join queryover


【解决方案1】:

HQL 不支持。这里唯一的选择是使用纯 sql 查询。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-26
    • 1970-01-01
    • 2012-05-28
    • 2011-07-04
    • 2013-03-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多