私はDriverImagesを結合するテーブルDriverScansを持っています。どのDriverImageにもSentフィールドがfalseであるすべてのDriverScansを返すようにしたい。nhibernate結合基準ヘルプ
基本的に
SELECT DriverScan.*
FROM DriverScan
INNER JOIN DriverImages
ON DriverImages.DriverScanId = DriverScan.DriverScanId
WHERE DriverImages.Sent = 0
のみDriverScans以下のコードが、作成されたSQLクエリはインナー画像フィールドを含みDriverScanとDriverImagesの参加引き戻します。 SQLでDriverScanの情報のみが返されるように、コードを書くにはどうすればいいですか?
public IEnumerable<DriverScan> GetNewScans()
{
var session = GetCleanSession();
var query = session.CreateCriteria(typeof(DriverScan));
query.CreateCriteria("DriverImages", JoinType.InnerJoin)
.Add(Cr.Restrictions.Eq("Sent", false));
return query.List<DriverScan>();
}
DriverImagesに関連する私のマッピングが
HasMany<DriverDoc>(x => x.DriverDocs)
.WithKeyColumn("DriverScanId").IsInverse()
.Cascade.AllDeleteOrphan().LazyLoad();
どうすればよいですか?これはCreateSQLQueryを使用していますか? CreateSQLQueryを使用したとき、それは機能しましたが、リスト
Session.CreateQuery(query).ToList()を使用できます。あなたがより多くの情報を必要とするかどうかを教えてください。 –
TheITGuy
完璧に動作し、HQLはクエリを書くための本当の簡単な方法のように見えます。 – strattonn