ah... I was confused by that: mutable="true"

2011/3/26 José F. Romaniello <[email protected]>

> he told me that he want a read-only model...
>
> 2011/3/26 Fabio Maulo <[email protected]>
>
>> Krzys,
>> How you are adding those comments in the DB ?
>>
>> 2011/3/26 Krzysztof Koźmic <[email protected]>
>>
>>>  Mohamed,
>>>
>>> Correct - as Anne pointed out, it seems NHibernate just doesn't handle
>>> joined mappings correctly and seems to always (or in some cases) assume
>>> every reference points to "primary" table.
>>>
>>>
>>> On 26/03/2011 1:05 PM, Mohamed Meligy wrote:
>>>
>>> The problem with the above SQL actually is that you
>>>
>>>  1- Cannot add 'where' clause to the <join /> mapping tag
>>> 2- Cannot alternatively refer to the <join /> part in the 'where' of the
>>> <class /> itself. There is no alias or something that you can use inside
>>> that 'where' to refeer to the <join /> part.
>>>
>>>  I think this is the case even independent from filters completely.
>>> Regardless of them, you still cannot have a 'where' based on columns in the
>>> <join /> part (or can you?).
>>>
>>>
>>>
>>> *Mohamed Meligy
>>> *Readify | Senior Developer
>>>
>>> M:+61 451 835006 | W: readify.net
>>> [image: Description: Description: Description: Description: 
>>> rss_16]<http://gurustop.net>
>>> [image: Description: Description: Description: Description:
>>> cid:[email protected]] <http://www.linkedin.com/in/meligy>
>>>   [image: Description: Description: Description: Description:
>>> cid:[email protected]] <http://twitter.com/meligy>
>>>  
>>> <http://www.greatplacetowork.com.au/best/best-companies-australia.php><http://www.readify.net/AboutUs/NewsItem.aspx?id=10>
>>>
>>>
>>>
>>> On Sat, Mar 26, 2011 at 9:52 AM, xtoff <[email protected]>wrote:
>>>
>>>> @Anne - I'm open to ideas how to solve the underlying problem (having
>>>> multilingual app that in C# model is single-language) differently.
>>>> That's more important to me short term than having the eforementioned
>>>> bug fixed.
>>>>
>>>> @Fabio - WRT the warning, I'm not sure what Ayende meant. I tried his
>>>> solution and it works on 3.1. That's actually my fallback solution for
>>>> now.
>>>>
>>>> On Mar 26, 5:28 am, Anne Epstein <[email protected]> wrote:
>>>> > The <join> mapping is problematic in that various features in
>>>> > NHibernate will assume that fields, keys, etc are in the primary table
>>>> > that may actually be in the secondary table-resulting in errors.
>>>> > There are a number of bugs in jira related to this kind of problem
>>>> > with the <join> element.  At this point, until there is a real
>>>> > solution that consistently makes NHibernate deal with this
>>>> > relationship properly in all NHibernate features (and I wouldn't hold
>>>> > my breath), I'd avoid this mapping strategy unless you absolutely have
>>>> > to- you'll almost certainly hit some weirdness if you try anything
>>>> > complex/interesting.
>>>> >
>>>> > On Fri, Mar 25, 2011 at 1:25 PM, José F. Romaniello
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>>  > <[email protected]> wrote:
>>>> > > It is not the same, he is using a filter inside the "where"
>>>> attribute
>>>> > > of the <class> to filter by a column in a <join>. It is different to
>>>> > > the formula of Ayende.... But im not sure if it might work
>>>> >
>>>>  > > 2011/3/25, Fabio Maulo <[email protected]>:
>>>> > >> If you use that solution, please have a look to WARNING.
>>>> >
>>>>  > >> 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/localizingnhibernatecontext.
>>>> ..
>>>>  >
>>>> > >>> 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.
>>>> >
>>>> > > --
>>>> > > Enviado desde mi dispositivo móvil
>>>> >
>>>> > > --
>>>> > > 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 athttp://
>>>> 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.
>>>>
>>>>
>>>
>>>  --
>>> 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.

Reply via email to