私は単純に、次のように熱心に読み込まれるクエリを作成しようとしています。
Select * from Users where Id IN (1,2,3)
Select * from Bids where UserId in (1,2,3)
現在、結合が返す結果が多すぎるため、問題が発生しています。
私は単純に、次のように熱心に読み込まれるクエリを作成しようとしています。
Select * from Users where Id IN (1,2,3)
Select * from Bids where UserId in (1,2,3)
現在、結合が返す結果が多すぎるため、問題が発生しています。
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>();