これはよくある質問/問題だと思いますが、適切で簡潔な回答を見つけることができませんでした。
問題
継承関係があるように見えるエンティティをマップする方法:
Company
Supplier
Manufacturer
Customer
ただし、サプライヤーはメーカーになることができます。
また
Person
Doctor
Patient
Employee
患者が医師になることも、従業員になることもできます。
提案: ロールを使用する
NHibernate フォーラムでの議論では、これは多重継承であるという反応がよくあります。
http://forum.hibernate.org/viewtopic.php?t=959076
彼らが提案する解決策は、コンポジションを使用するか、「ロール」を使用することです。ただし、それを正確に行う方法についての例や説明は見つかりません。
「継承よりも構成を優先します。」クラスでのちょっとしたお菓子を覚えていますか? この例では、多重継承を試みていることに同意する必要があります。C# や Java では (まだ) 不可能です。個人的には、リモデリングを検討して、Person オブジェクトを持ち、Person が Role の 1 対多のコレクションを持つようにすることをお勧めします。