Yeah, this was more about showing it's possible than anything.
In my case, I'm using it only with immutable fields

   Diego


On Fri, Apr 2, 2010 at 15:25, Roger Kratz <[email protected]> wrote:

> It's impressive that nh could do this (didn't know that), but I would
> personally go for some sort of composition instead of inheritance here. IMHO
> - an entity should be _one_ type throughout its life time, the fact that
> it's passing through a db making it possible to change this OO behaviour
> feels... well... strange.
>
>
>
> ________________________________
> Från: [email protected] [[email protected]] för Diego
> Mijelshon [[email protected]]
> Skickat: den 2 april 2010 19:51
> Till: nhusers
> Ämne: Re: [nhusers] how to map - table per class hierarchy with default
> class
>
> Not only is theoretically possible to map arbitrary stuff to discriminator
> values: I'm actually doing it :-)
> All you have to do is use a formula for the discriminator. Example:
>
>  <class name="Guy" discriminator-value="G"> <id ... >...</id>
> <discriminator formula="case when Income &gt; 1000000 then 'R' when Income
> &lt; 10000 then 'P' else 'G' end"/> <property name="Income"/> <subclass
> discriminator-value="R" name="RichGuy"/> <subclass discriminator-value="P"
> name="PoorGuy"/> </class>
>
> Anyway, when using inheritance like this, you need to keep some things in
> mind:
>
>  *   When lazily loading instances of Guy, the object type will inherit
> from Guy, NOT RichGuy/PoorGuy. Virtual method calls will work as expected,
> but type comparisons/conversions (i.e. "guyInstance is RichGuy" or
> "guyInstance as PoorGuy") will fail. Read
> http://ayende.com/Blog/archive/2009/09/03/answer-the-lazy-loaded-inheritance-many-to-one-association-orm.aspx
>  *   A persistent instance will not change its type while it's referenced
> by the session. So, if you increase a poor guy's income to 10000, you'll
> only get a PoorGuy instance in a different session OR by evicting and
> reloading it.
>
>   Diego
>
>
> On Fri, Apr 2, 2010 at 13:28, nadav s <[email protected]<mailto:
> [email protected]>> wrote:
> lets say i have Employee which is a concrete class with the properties
> Id
> Type
>
> and i have CoolEmployee and MoronEmployee that extend Employee
>
> now i have many employee types and i want type=1 to generate CoolEmployee
> and type=2 to generate MoronEmployee.
> there are alot of other possible values, for instance, 3 is manager and 4
> is Cleaning guy, and i want all of these other values to generate the
> Employee class
>
> Do i need an extra column to discriminate between the classes or can i
> somehow say that Employee is the default class of a not-found value and use
> the type column?
>
> (i don't have a mapping because it is just a theoritical question :) )
>
> btw, another thing i was wondering about but couldn't google an answer is
> if it is currently possible to set range of values for discrimination
> (similar to the previous question)
> lets say that i have the sub classes RichGuy, PoorGuy both extend Guy
> and i wanna have the RichGuy subclass generated when the Income column is
> more than 1,000,000
> if the Income is between  10,000 to 1,000,000 its just a Guy
> and less than 10,000 is a PoorGuy
>
> could this be mapped?
> i see a big problem with this scenario because if the Income property is
> updatebly by the application, we could have a PoorGuy that his Income just
> became
> high enough that he should become just a Guy
> but if the Income property isn't updatebly it might make sense
>
> again, it is just a theoretical question.
>
> thanks.
>
> --
> You received this message because you are subscribed to the Google Groups
> "nhusers" group.
> To post to this group, send email to [email protected]<mailto:
> [email protected]>.
> To unsubscribe from this group, send email to
> [email protected]<nhusers%[email protected]>
> <mailto:nhusers%[email protected]<nhusers%[email protected]>
> >.
> For more options, visit this group at
> http://groups.google.com/group/nhusers?hl=en.
>
>
> --
> You received this message because you are subscribed to the Google Groups
> "nhusers" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected]<nhusers%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/nhusers?hl=en.
>
> --
> You received this message because you are subscribed to the Google Groups
> "nhusers" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected]<nhusers%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/nhusers?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"nhusers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/nhusers?hl=en.

Reply via email to