Hi,

It seems that it is a well-known issue
https://nhibernate.jira.com/browse/NH-2354 and this was closed as "not an
issue". But I think in case of union-subclass it is possible to
implement...

I've reopened the issue in JIRA, so if you want you can attach a test case
with or without the fix.

Best Regards, Alex.

2012/10/13 proge <[email protected]>

> I'm by no means an NHibernate expert so please let me know if I'm just
> approaching this case wrong in my mapping.
>
> I was digging into some unexpected behavior that I ran into when using
> union subclasses and trying to map an abstract Name-property of a
> Party-entity, which is inherited by Company and Person-entities, which
> define the actual value for the name (simply company's name for a Company,
> firstname + " " + lastname for a Person). Please see
> http://stackoverflow.com/questions/12762682/how-to-map-an-abstract-property-with-nhibernate-union-subclass
>  for
> a more detailed description of both the model and the mapping used.
>
> Today I finally had time to try and debug the  NHibernate-core-3.3.1 GA
> sources to try to find what I'm doing wrong. I noticed that in
> AbstractPropertyMapping's AddPropertyPath -method, the code is not checking
> whether columns for some property path already exist, but simply assigns
> the value for a given path (thus overwriting if the path already had some
> columns defined). This results in the where clause being something like
> -- WHERE this_.company_name like 'queryParameterValue' -- when I'd expect
> it to be something like -- WHERE this_.company_name like
> 'queryParameterValue' OR first_name || ' ' || last_name like
> 'queryParameterValue'.
>
> protected void AddPropertyPath(string path, IType type, string[] columns,
> string[] formulaTemplates)
> {
> typesByPropertyPath[path] = type;
>  columnsByPropertyPath[path] = columns; // These values for keys should
> probably not be just set, but also checked for previous values
>
> if (formulaTemplates != null)
>  formulaTemplatesByPropertyPath[path] = formulaTemplates;
> }
>
> The formulaTemplatesByPropertyPath variable is also related here, as I'm
> using a formula (afaik the formulas are not checked at all
> when GetColumnNames (AbstractPropertyMapping:217) is called when building
> the query). However, the problem seems to exist also when no formulas are
> involved, as I tried to change the mapping so that Person's "Name" property
> refers to the first_name as per the mapping below:
>
>     <union-subclass name="Person" table="`person`" extends="Party">
>       <property name="Name" access="field.camelcase-underscore"
> update="false" insert="false">
>         <column name="first_name"/>
>       </property>
>       <property name="FirstName">
>         <column name="first_name" />
>       </property>
>       <property name="LastName">
>         <column name="last_name" />
>       </property>
>     </union-subclass>
>
> So what I'm wondering is that is this actually a bug, or am I just simply
> missing something? This behavior seems unexpected to me and this first look
> at a code makes me to think that the behavior is not intended. Also, please
> let me know if this is not the right place to report a bug.
>
> - proge
>
>  --
> You received this message because you are subscribed to the Google Groups
> "nhusers" group.
> To view this discussion on the web visit
> https://groups.google.com/d/msg/nhusers/-/zrwjlg7IRkQJ.
> 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.
>

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