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.
