Unless you work with a EliotNess-ed db schema ,
"awesome" was exaggerated though

2011/3/26 Fabio Maulo <[email protected]>

> bah?!? perhaps....
> The matter is that you can do the same with NH3.1 with an
> AuxiliaryDataBaseObject creating a view and then mapping the same class to
> the view.
>
>
> 2011/3/26 José F. Romaniello <[email protected]>
>
>> awesome
>>
>>
>> 2011/3/26 Fabio Maulo <[email protected]>
>>
>>> it is new in NH3.2
>>>
>>> 2011/3/26 José F. Romaniello <[email protected]>
>>>
>>> wow! didn't know about <subselect /> ... I learn something new about NH
>>>> every day :)
>>>>
>>>>
>>>> 2011/3/26 Fabio Maulo <[email protected]>
>>>>
>>>>>   <class name="Blog" mutable="false">
>>>>>     <subselect>
>>>>>       SELECT Blog.Id, Blog.Author, Blog.Title, Comment.Comment
>>>>>       FROM Blog INNER JOIN Comment ON Blog.Id = Comment.Blog_id
>>>>>       WHERE Comment.LanguageId = :blogcomment.languageId
>>>>>     </subselect>
>>>>>     <id name="Id">
>>>>>       <generator class="assigned" />
>>>>>     </id>
>>>>>     <property name="Author" />
>>>>>     <property name="Title" />
>>>>>     <property name="Comment" />
>>>>>   </class>
>>>>>
>>>>>   <filter-def name="blogcomment">
>>>>>     <filter-param name="languageId" type="int"/>
>>>>>   </filter-def>
>>>>>
>>>>>
>>>>> 2011/3/25 Krzysztof Koźmic <[email protected]>
>>>>>
>>>>>> So I have a one-to-many tables in database that looks like the
>>>>>> following (I'm on NHibernate 3.1):
>>>>>>
>>>>>> blog
>>>>>>    id
>>>>>>    title
>>>>>>    author
>>>>>>
>>>>>> comments
>>>>>>    id
>>>>>>    blog_Id
>>>>>>    languageid
>>>>>>    comment
>>>>>>
>>>>>> and I want to map it to a *single* class with *single* comment
>>>>>> property that maps to text column in comments table for current language.
>>>>>>
>>>>>> Basically the idea is identical to one ayende had few years back:
>>>>>> http://ayende.com/Blog/archive/2006/12/26/localizingnhibernatecontextualparameters.aspx
>>>>>>
>>>>>> The difference is I try to accomplish this without subselect but using
>>>>>> <join /> instead (mostly because the table with translations has more
>>>>>> columns than just the text that I may need to include in my joined 
>>>>>> class).
>>>>>>
>>>>>> So I created a solution for that and I'm also using filter to pass
>>>>>> language id to queries. I also have a noop property in my mapping for the
>>>>>> languageid as well as where clause in my mapping that does the filtering.
>>>>>>
>>>>>> And here's the SQL that NHibernate generates:
>>>>>>
>>>>>> SELECT this_.Id           as Id0_0_,
>>>>>>       this_.Author       as Author0_0_,
>>>>>>       this_.Title        as Title0_0_,
>>>>>>       this_1_.Comment    as Comment1_0_,
>>>>>>       this_1_.LanguageId as LanguageId1_0_
>>>>>> FROM   Blog this_
>>>>>>       inner join Comment this_1_
>>>>>>         on this_.Id = this_1_.Blog_id
>>>>>> WHERE  (this_.LanguageId = 2 /* @p0 */)
>>>>>>
>>>>>> The SQL is invalid as the where should be on this_1_.LanguageId as the
>>>>>> value comes from the joined table, not the main one.
>>>>>>
>>>>>> Also the LanguageId column is mapped as access="noop" which TTBOMK
>>>>>> should mean it won't be queried for so I'm surprised to see NHibernate is
>>>>>> trying to select it as well. To me it is just wasting bandwith.
>>>>>>
>>>>>> So I have two questions now.
>>>>>>
>>>>>> 1. How can I accomplish what I'm trying to get to.
>>>>>> 2. Are those issues I mentioned (invalid where clause and ignoring
>>>>>> noop access) bugs in NHibernate or am I looking at it from the wrong 
>>>>>> angle?
>>>>>>
>>>>>> Reproduction demo app (along with database dump) available here if
>>>>>> someone wants to play with it: http://ge.tt/5xoiqYY
>>>>>>
>>>>>> cheers,
>>>>>> Krzysztof
>>>>>>
>>>>>> --
>>>>>> 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.
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Fabio Maulo
>>>>>
>>>>>
>>>>>  --
>>>>> 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.
>>>>>
>>>>
>>>>  --
>>>> 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.
>>>>
>>>
>>>
>>>
>>> --
>>> Fabio Maulo
>>>
>>>  --
>>> 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.
>>>
>>
>>  --
>> 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.
>>
>
>
>
> --
> Fabio Maulo
>
>  --
> 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.
>

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