1
QueryOver APIを使用して、以下のHQLクエリをどのように置き換えることができますか? JoinAlias
とJoinQueryOver
の両方が関連するエンティティへのパスを記述した発現を必要とするのでQueryOverを使用したクロスジョイン
var sql = "from Role r, Action a where r.Active = :active and a.Active = :active";
var result = manager.Session.GetISession().CreateQuery(sql)
.SetBoolean("active", true).List();
うう、いやそれはありません。 1つのSQLステートメントを生成します... –
上記の解決策は、魔法の文字列の問題を避けることができますが、私はそれを信じていません。これは、上記のステートメントがNHibernateがデータベースを何度もquerryに導くためです。ロールテーブルに4つのレコードがあり、アクションテーブルには6つのレコードがあるとします。 NHibernateが実行する最初のクエリは、Roleテーブルから4つのレコードを返すことです。その後、返されたレコードごとに、NHibernateはデータベースを読み込み、Actionテーブルから6レコードを取得します。つまり、データベースへのルートの数は、最初のクエリの返されたレコードの数に等しくなり、1に加算されます。 – tilonthuduc
Andrew、私は試しましたが、結果は私が上で説明したものです。あなたは同じことをしてもらえますか? – tilonthuduc