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]> 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].
> 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