サブクエリに関する助けが必要です。 私の問題は簡単なようですが、わかりません。nHibernateの基準におけるサブクエリ
私は3つのエンティティがあります - 企業 - 車 - 従業員
従業員が会社のリストを持っている(ただし、当社は従業員のリストを持っているdoesntのを)。 車は1社あります。
従業員がアクセスできるすべての会社からすべての車を取り出す必要があります。
データベース構造が役立つ場合があります。
会社
id | Name
員
id | Name
CompanyToEmployee
employee_id | company_id
カー
id | Name | company_id
gmileyは、いくつかのモーラ情報を追加し、I`mを推薦したよう。
私がこれまで行ったことはあまりありません。
ICriteria consult = Session.CreateCriteria<Car>();
DetachedCriteria c = DetachedCriteria.For<Employee>()
.SetProjection(Projections.Property("Companies"))
.Add(Restrictions.Eq("Id", employee.Id));
consult.Add(Subqueries.PropertyIn("Company.Id", c));
しかし、それは返すものは、同じId '従業員'を持つ会社内のすべての車です。そして私はなぜそれが見えるのですか?しかし、私は自分のニーズにそれを変更することはできません。明確にする
ダムデータ:
2人の従業員があります。 "ビル・ゲイツ" e」のスティーブ・ジョブズは、ビル・ゲイツ氏は、GoogleとMicrosoftのために働く
Steve JobsがGoogleとAppleのために働く
。 。
Googleが2台あります。
"をカー3": "車1" と "2号車" をMicrosoftは1台の車を持っています
Appleには「Car 4」、「Car 5」、および「Car 6」の3台の車があります。
私が必要としているもの: すべての会社のすべての車ビル・ゲートが働いています。
この場合、車:「車1」、「車2」および「車3」。
ありがとうございます!この行で
可能であれば、サンプルデータ、希望する結果の例を記入してください。最も重要なことは、これまでに試したコードのいくつかを提供していることです。人々があなたがそれに何らかの努力をしているのを見て、あなたが持っていないと言っているのではなく、あなたが持っていることを示すことは良いことです。コードが完全に間違っていることがわかっても、あなたが何を考えているのか理解するのに役立ちます。 – gmiley
この宿題はありますか?データベースの設計は少し奇妙です。しかし、これに加えて、常により良いクラスデザインを持つことが可能です。このクエリーのどちらかを変更する必要はありませんが、それはもっと簡単になります。 –
これは非常に簡単な方法で公開される実際のシナリオです。問題に集中する。 –