0

私は単純に、次のように熱心に読み込まれるクエリを作成しようとしています。

Select * from Users where Id IN (1,2,3)
Select * from Bids where UserId in (1,2,3)

現在、結合が返す結果が多すぎるため、問題が発生しています。

4

1 に答える 1

0

multicriteria (またはこの例のように Future) を使用してみてください。1 つのバッチで 2 つのクエリを発行し、熱心な読み込みを行う必要があります。

        var bids = Session.QueryOver<Bid>()
            .JoinQueryOver(b => b.User)
            .WhereRestrictionOn(u => u.Id).IsIn(ids)
            .Future<Bid>();
        var users = Session.QueryOver<User>()
            .WhereRestrictionOn(u => u.Id).IsIn(ids)
            .List<User>();

唯一の問題は、HQL を使用できないようにするために、Bid -> User に参加することです。

        var bids = Session.CreateQuery("from Bid b where b.User.id in (:userIds)")
            .SetParameterList("userIds", ids)
            .Future<Bid>();
        var users = Session.QueryOver<User>()
            .WhereRestrictionOn(u => u.Id).IsIn(ids)
            .List<User>();
于 2012-05-23T20:11:49.267 に答える