File tree Expand file tree Collapse file tree 12 files changed +277
-115
lines changed Expand file tree Collapse file tree 12 files changed +277
-115
lines changed Load Diff Large diffs are not rendered by default.
Load Diff Large diffs are not rendered by default.
Original file line number Diff line number Diff line change 159
159
It must re-implement < tt class ="literal "> Equals()</ tt > and
160
160
< tt class ="literal "> GetHashCode()</ tt > , consistently with the database's
161
161
notion of composite key equality.
162
+ </ p > </ li > < li > < p >
163
+ It should re-implement < tt class ="literal "> ToString()</ tt > if you consider
164
+ using the second level cache. See < a href ="caches.html#NHibernate.Caches-howto " title ="26.1. How to use a cache? "> Section 26.1, “How to use a cache?”</ a > .
162
165
</ p > </ li > </ ul > </ div > < p >
163
166
You can't use an < tt class ="literal "> IIdentifierGenerator</ tt > to generate composite keys.
164
167
Instead the application must assign its own identifiers.
Load Diff Large diffs are not rendered by default.
Original file line number Diff line number Diff line change 287
287
</ p > < p >
288
288
The following table shows the limitations of table per concrete-class
289
289
mappings, and of implicit polymorphism, in NHibernate.
290
- </ p > < div class ="table "> < a name ="d0e8426 "> </ a > < p class ="title "> < b > Table 8.1. Features of inheritance mappings</ b > </ p > < table summary ="Features of inheritance mappings " border ="1 "> < colgroup > < col align ="left "> < col align ="left "> < col align ="left "> < col align ="left "> < col align ="left "> < col align ="left "> < col align ="left "> < col align ="left "> </ colgroup > < thead > < tr > < th align ="left "> Inheritance strategy</ th > < th align ="left "> Polymorphic many-to-one</ th > < th align ="left "> Polymorphic one-to-one</ th > < th align ="left "> Polymorphic one-to-many</ th > < th align ="left "> Polymorphic many-to-many</ th > < th align ="left "> Polymorphic < tt class ="literal "> Load()/Get()</ tt > </ th > < th align ="left "> Polymorphic queries</ th > < th align ="left "> Polymorphic joins</ th > < th align ="left "> Outer join fetching</ th > </ tr > </ thead > < tbody > < tr > < td align ="left "> table per class-hierarchy</ td > < td align ="left "> < tt class ="literal "> <many-to-one></ tt > </ td > < td align ="left "> < tt class ="literal "> <one-to-one></ tt > </ td > < td align ="left "> < tt class ="literal "> <one-to-many></ tt > </ td > < td align ="left "> < tt class ="literal "> <many-to-many></ tt > </ td > < td align ="left "> < tt class ="literal "> s.Get<IPayment>(id)</ tt > </ td > < td align ="left "> < tt class ="literal "> from IPayment p</ tt > </ td > < td align ="left "> < tt class ="literal "> from Order o join o.Payment p</ tt > </ td > < td align ="left "> < span class ="emphasis "> < em > supported</ em > </ span > </ td > </ tr > < tr > < td align ="left "> table per subclass</ td > < td align ="left "> < tt class ="literal "> <many-to-one></ tt > </ td > < td align ="left "> < tt class ="literal "> <one-to-one></ tt > </ td > < td align ="left "> < tt class ="literal "> <one-to-many></ tt > </ td > < td align ="left "> < tt class ="literal "> <many-to-many></ tt > </ td > < td align ="left "> < tt class ="literal "> s.Get<IPayment>(id)</ tt > </ td > < td align ="left "> < tt class ="literal "> from IPayment p</ tt > </ td > < td align ="left "> < tt class ="literal "> from Order o join o.Payment p</ tt > </ td > < td align ="left "> < span class ="emphasis "> < em > supported</ em > </ span > </ td > </ tr > < tr > < td align ="left "> table per concrete-class (union-subclass)</ td > < td align ="left "> < tt class ="literal "> <many-to-one></ tt > </ td > < td align ="left "> < tt class ="literal "> <one-to-one></ tt > </ td > < td align ="left "> < tt class ="literal "> <one-to-many></ tt > (for < tt class ="literal "> inverse="true"</ tt > only)</ td > < td align ="left "> < tt class ="literal "> <many-to-many></ tt > </ td > < td align ="left "> < tt class ="literal "> s.Get<IPayment>(id)</ tt > </ td > < td align ="left "> < tt class ="literal "> from IPayment p</ tt > </ td > < td align ="left "> < tt class ="literal "> from Order o join o.Payment p</ tt > </ td > < td align ="left "> < span class ="emphasis "> < em > supported</ em > </ span > </ td > </ tr > < tr > < td align ="left "> table per concrete class (implicit polymorphism)</ td > < td align ="left "> < tt class ="literal "> <any></ tt > </ td > < td align ="left "> < span class ="emphasis "> < em > not supported</ em > </ span > </ td > < td align ="left "> < span class ="emphasis "> < em > not supported</ em > </ span > </ td > < td align ="left "> < tt class ="literal "> <many-to-any></ tt > </ td > < td align ="left "> < span class ="emphasis "> < em > use a query</ em > </ span > </ td > < td align ="left "> < tt class ="literal "> from IPayment p</ tt > </ td > < td align ="left "> < span class ="emphasis "> < em > not supported</ em > </ span > </ td > < td align ="left "> < span class ="emphasis "> < em > not supported</ em > </ span > </ td > </ tr > </ tbody > </ table > </ div > </ div > </ div > < div class ="navfooter "> < hr > < table width ="100% " summary ="Navigation footer "> < tr > < td width ="40% " align ="left "> < a accesskey ="p " href ="components.html "> Prev</ a > </ td > < td width ="20% " align ="center "> < a accesskey ="u " href ="index.html "> Up</ a > </ td > < td width ="40% " align ="right "> < a accesskey ="n " href ="manipulatingdata.html "> Next</ a > </ td > </ tr > < tr > < td width ="40% " align ="left " valign ="top "> Chapter 7. Component Mapping </ td > < td width ="20% " align ="center "> < a accesskey ="h " href ="index.html "> Home</ a > </ td > < td width ="40% " align ="right " valign ="top "> Chapter 9. Manipulating Persistent Data</ td > </ tr > </ table > </ div > {% include google_analytics.html %}{% include metrika_yandex_ru.html %}</ body > </ html >
290
+ </ p > < div class ="table "> < a name ="d0e8475 "> </ a > < p class ="title "> < b > Table 8.1. Features of inheritance mappings</ b > </ p > < table summary ="Features of inheritance mappings " border ="1 "> < colgroup > < col align ="left "> < col align ="left "> < col align ="left "> < col align ="left "> < col align ="left "> < col align ="left "> < col align ="left "> < col align ="left "> </ colgroup > < thead > < tr > < th align ="left "> Inheritance strategy</ th > < th align ="left "> Polymorphic many-to-one</ th > < th align ="left "> Polymorphic one-to-one</ th > < th align ="left "> Polymorphic one-to-many</ th > < th align ="left "> Polymorphic many-to-many</ th > < th align ="left "> Polymorphic < tt class ="literal "> Load()/Get()</ tt > </ th > < th align ="left "> Polymorphic queries</ th > < th align ="left "> Polymorphic joins</ th > < th align ="left "> Outer join fetching</ th > </ tr > </ thead > < tbody > < tr > < td align ="left "> table per class-hierarchy</ td > < td align ="left "> < tt class ="literal "> <many-to-one></ tt > </ td > < td align ="left "> < tt class ="literal "> <one-to-one></ tt > </ td > < td align ="left "> < tt class ="literal "> <one-to-many></ tt > </ td > < td align ="left "> < tt class ="literal "> <many-to-many></ tt > </ td > < td align ="left "> < tt class ="literal "> s.Get<IPayment>(id)</ tt > </ td > < td align ="left "> < tt class ="literal "> from IPayment p</ tt > </ td > < td align ="left "> < tt class ="literal "> from Order o join o.Payment p</ tt > </ td > < td align ="left "> < span class ="emphasis "> < em > supported</ em > </ span > </ td > </ tr > < tr > < td align ="left "> table per subclass</ td > < td align ="left "> < tt class ="literal "> <many-to-one></ tt > </ td > < td align ="left "> < tt class ="literal "> <one-to-one></ tt > </ td > < td align ="left "> < tt class ="literal "> <one-to-many></ tt > </ td > < td align ="left "> < tt class ="literal "> <many-to-many></ tt > </ td > < td align ="left "> < tt class ="literal "> s.Get<IPayment>(id)</ tt > </ td > < td align ="left "> < tt class ="literal "> from IPayment p</ tt > </ td > < td align ="left "> < tt class ="literal "> from Order o join o.Payment p</ tt > </ td > < td align ="left "> < span class ="emphasis "> < em > supported</ em > </ span > </ td > </ tr > < tr > < td align ="left "> table per concrete-class (union-subclass)</ td > < td align ="left "> < tt class ="literal "> <many-to-one></ tt > </ td > < td align ="left "> < tt class ="literal "> <one-to-one></ tt > </ td > < td align ="left "> < tt class ="literal "> <one-to-many></ tt > (for < tt class ="literal "> inverse="true"</ tt > only)</ td > < td align ="left "> < tt class ="literal "> <many-to-many></ tt > </ td > < td align ="left "> < tt class ="literal "> s.Get<IPayment>(id)</ tt > </ td > < td align ="left "> < tt class ="literal "> from IPayment p</ tt > </ td > < td align ="left "> < tt class ="literal "> from Order o join o.Payment p</ tt > </ td > < td align ="left "> < span class ="emphasis "> < em > supported</ em > </ span > </ td > </ tr > < tr > < td align ="left "> table per concrete class (implicit polymorphism)</ td > < td align ="left "> < tt class ="literal "> <any></ tt > </ td > < td align ="left "> < span class ="emphasis "> < em > not supported</ em > </ span > </ td > < td align ="left "> < span class ="emphasis "> < em > not supported</ em > </ span > </ td > < td align ="left "> < tt class ="literal "> <many-to-any></ tt > </ td > < td align ="left "> < span class ="emphasis "> < em > use a query</ em > </ span > </ td > < td align ="left "> < tt class ="literal "> from IPayment p</ tt > </ td > < td align ="left "> < span class ="emphasis "> < em > not supported</ em > </ span > </ td > < td align ="left "> < span class ="emphasis "> < em > not supported</ em > </ span > </ td > </ tr > </ tbody > </ table > </ div > </ div > </ div > < div class ="navfooter "> < hr > < table width ="100% " summary ="Navigation footer "> < tr > < td width ="40% " align ="left "> < a accesskey ="p " href ="components.html "> Prev</ a > </ td > < td width ="20% " align ="center "> < a accesskey ="u " href ="index.html "> Up</ a > </ td > < td width ="40% " align ="right "> < a accesskey ="n " href ="manipulatingdata.html "> Next</ a > </ td > </ tr > < tr > < td width ="40% " align ="left " valign ="top "> Chapter 7. Component Mapping </ td > < td width ="20% " align ="center "> < a accesskey ="h " href ="index.html "> Home</ a > </ td > < td width ="40% " align ="right " valign ="top "> Chapter 9. Manipulating Persistent Data</ td > </ tr > </ table > </ div > {% include google_analytics.html %}{% include metrika_yandex_ru.html %}</ body > </ html >
You can’t perform that action at this time.
0 commit comments